[英]How can I investigate a memory leak better in NetBeans
我正在写一个网络蜘蛛。 它运行良好,除了似乎有内存泄漏。 该程序将运行正常约15分钟然后它将崩溃。
如果我使用NetBeans中的“配置文件”功能监视它,我可以看到内存随着时间的推移而增加,直到最终我得到一个java.lang.OutOfMemoryError
并且程序完全崩溃。
下图显示了一分钟后和15分钟后(在崩溃之前)使用的对象内存的快照。有没有办法告诉这些对象(我的主要罪魁祸首是byte[]
和char[]
)在哪里被创建或者什么仍然引用它们(并因此防止它们被垃圾收集器销毁)?
或者我不知道我在说什么?
谢谢,我感谢你的帮助。
您可能正确地按照您的假设,但可能没有使用正确的工具?
我不了解NetBeans,但我知道Yourkit Profiler和JProfiler都是这类分析的强大工具。 你可以走堆并分析“热点”。 这两个工具都有试用许可证,因此您可以试用它们,看看哪一个最适合您。
使用分析器分析内存时,可以打开堆栈跟踪的记录以进行对象分配。
在该模式下运行时,可以右键单击该类并显示创建对象的堆栈跟踪。 这应该给你足够的信息来追踪内存泄漏。
您可能也想阅读这篇文章: http : //netbeans.org/community/magazine/html/04/profiler.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.