2012-08-02 4 views
1

나는 아래로 몇 시간에 로그가 Java에서 메모리 누수를 추적하는 방법은 무엇입니까?

java.lang.OutOfMemoryError: GC overhead limit exceeded 
     at java.io.FileDescriptor.<init>(FileDescriptor.java:62) 
     at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:217) 
     at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink$Boss.run(NioServerSocketPipelineSink.java:235) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
     at java.lang.Thread.run(Thread.java:722) 

어떻게 이런 문제를 추적하기 위해 표시하는 코드가? 어떤 도구가 도움이 될까요? 스택에서 코드의 아무 행도 가리 ​​키지 않습니다.

답변

3

힙 덤프는 메모리 누수의 근본 원인을 알아 내기 위해 분석해야합니다.

jhat 및 jprofiler 등의 도구가 있으며 힙 덤프를 분석하는 데 사용됩니다.

2

Java 응용 프로그램의 CPU 및 메모리 사용 모니터링을위한 도구가 많이 있습니다. 예를 들어, JDK 1.6에서는 jvisualvm 프로파일 링 도구를 찾을 수 있습니다. 또한 -j 옵션과 함께 사용할 수있는 collect 명령을 포함하는 Sun Profiling Studio가 있습니다 (자세한 내용은 docs 참조).

P.collect 명령을 사용하면 실제로 실행 된 코드를 표시 할 수 있습니다.

0

많은 문제를 해결할 수있는 옵션이 있습니다. 여기에 무료 모니터링 도구는이

관련 문제