java - 如何跟踪 Java 中的内存泄漏?

标签 java debugging memory-leaks

我有一个代码会在几个小时后关闭,日志显示

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)

如何跟踪这样的问题?有什么工具可以帮忙吗? 堆栈没有指向我代码中的任何行。

最佳答案

需要分析堆转储以找出内存泄漏的根本原因。

有类似 jhat 的工具和 jprofiler 等,将用于分析堆转储。

关于java - 如何跟踪 Java 中的内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11786399/

相关文章:

java - OSIV 模式 - 优点和缺点?关于 OSIV 和观点的一般问题

ios - 为什么这个空白游戏在 Swift 中有漏洞

c# - .Net 内存增长问题

javascript - jQuery load() 方法内存泄漏?

java - primefaces jsf 2 返回空数据

java - 将 ArrayList<Uri> 保存到 SharedPreferences

java - 切换语句引号

java - 调试和计数断点命中

linux - 如何将错误从 Xul 记录到文件中?

c++ - 在代码块中调试时如何查看数组的内容?