무엇이 잘못되었는지 알아내는 방법이나 팁을 찾고 있습니다.Linux 서버의 Java 메모리가 부족합니다.
참조를 보여주는 VisualVM 도구로 heapdumps를보고 있습니다. 내가 사용할 수있는 더 나은 도구가 있습니까? 이 참조를 해제하기 위해 명령 줄에서 실행할 수있는 것이 있습니까? jconsole GC를 사용하지 않으면 약 5 일 동안 만 지연 될 수 있습니다. 혼란 의 느린 축적을 고정하는 것은 정말 당신이 미세 조정하여 VM에 대해 생각할 수있는 도움이되지 않는 경우를 살펴에서이,
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.
엄청난 양의 데이터 문자열을 보내지 않는 한, 문제는 시간이 지남에 따라 천천히 축적되는 것이지 특정 원인이 아니라고 생각됩니다. –
이전에는 OutOfMemoryError 문제를 해결하기 위해 이클립스 메모리 분석기 도구를 사용했지만 제 경우에는 한 객체가 8GB SQL 결과 객체를 보유하고 있었기 때문에 발생했습니다. MAT를 사용하여 시도해 볼 수 있습니다. 문제가 Hot Licks의 설명 인 경우 실제 메모리 모니터링을 수행해야 할 수도 있습니다 (단지 메모리 사용량 증가). – birryree
여전히 메모리 증가를 분석하고 성장이 어디에서 발생하는지 분석 할 수있는 프로파일 러가 필요합니다. 이런 상황에서 저의 경험에서 성장의 동기는 사실 한두 가지 근원에서 왔습니다. 그러나 여기에 해당 될 수도 있고 그렇지 않을 수도 있습니다. – ControlAltDel