调试如何在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)
如何追踪这样的问题?有什么工具能帮上忙吗? 堆栈没有指向代码中的任何行
# 1 楼答案
你有很多选择来解决你的问题。这里有免费的监控工具,请看这个
# 2 楼答案
堆转储需要进行分析,以找出内存泄漏的根本原因
有jhat和jprofiler等工具可用于分析堆转储