寻找解决方法或关于如何找出问题的一些提示。Linux服务器用完java内存
使用只显示引用的VisualVM工具查看heapdumps正在举行。有更好的工具可以使用吗?有什么我可以从命令行运行以释放这些引用?使用jconsole GC不起作用,只能延长约5天的锁定时间。
Linux服务器获取以下Java OOM每隔10-14天:
Apr 18, 2012 1:34:55 PM org.apache.jk.core.MsgContext action
WARNING: Error sending end packet
java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
at org.apache.jk.common.ChannelSocket.send(ChannelSocket.java:508)
at org.apache.jk.common.JkInputStream.endMessage(JkInputStream.java:112)
at org.apache.jk.core.MsgContext.action(MsgContext.java:293)
at org.apache.coyote.Response.action(Response.java:182)
at org.apache.coyote.Response.finish(Response.java:304)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:204)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:744)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:674)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:866)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:636)
Apr 18, 2012 1:34:55 PM org.apache.jk.common.ChannelSocket processConnection
WARNING: processCallbacks status 2
java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid20051.hprof ...
Heap dump file created [1147163590 bytes in 149.230 secs]
Apr 18, 2012 1:59:14 PM ServerCommunicatorAdmin reqIncoming
WARNING: The server has decided to close this client connection.
Apr 18, 2012 1:59:14 PM ServerCommunicatorAdmin reqIncoming
WARNING: The server has decided to close this client connection.
+2
除非你发送了一些庞大的数据字符串,否则我怀疑问题是随着时间的推移,杂乱的缓慢积累,而不是一些具体的原因。 –
2012-04-25 17:44:24
+0
我以前使用过Eclipse Memory Analyzer Tool来诊断OutOfMemoryError,但在我的情况下,这是因为一个对象持有8 GB SQL结果对象。您可以尝试使用MAT,或者如果问题是热舔描述的问题(只是增加内存消耗),您可能必须执行实时内存监视。 –
2012-04-25 17:46:19
+1
但是,您需要一个分析器来分析内存增长和您的增长来自何处。根据我在这种情况下的经验,增长的动力实际上来自一两个来源。但是这可能适用或不适用 –
2012-04-25 17:48:32