java - 如何在 NetBeans 中更好地调查内存泄漏

标签 java memory netbeans memory-leaks profiling

我正在写一个网络蜘蛛。它运行良好,但似乎存在内存泄漏。该程序将正常运行大约 15 分钟,然后就会崩溃。

如果我使用 NetBeans 中的“Profile”函数监视它,我可以看到内存随着时间的推移而增加,直到最终我得到一个 java.lang.OutOfMemoryError 并且程序完全崩溃。

下图显示了 1 分钟后和 15 分钟后(就在它崩溃之前)使用的对象的内存快照。有什么方法可以判断这些对象在哪里(我的罪魁祸首是 byte[]char[]) 正在被创建或者什么仍在引用它们(从而防止它们被垃圾收集器销毁)?

还是我不知道我在说什么?

alt text

谢谢,感谢您的帮助。

最佳答案

您的假设可能正确,但可能没有使用正确的工具?

我不了解 NetBeans,但我知道 Yourkit Profiler 和 JProfiler 都是进行此类分析的非常强大的工具。您可以遍历堆并分析“热点”。这两种工具都有试用许可证,因此您可以试用它们,看看哪一种最适合您。

关于java - 如何在 NetBeans 中更好地调查内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4294327/

相关文章:

mysql - MySQL 是将整行加载到内存中,还是只加载 WHERE、ORDER BY 和 GROUP BY 中使用的列?

c++ - C++ 和字符串 vector 中的内存泄漏或其他问题

java - NetBeans 和 Maven 项目

java - 使用 Netbeans 和 Tomcat 8 的 Websocket 服务器

java - Android 应用程序在 for 循环后崩溃

java - 在javafx gridpane中添加不可见行

c - 内存问题和功能

mysql - Netbeans无法正常连接MySQL数据库的原因是什么?

java - Android - 如何通过第三方应用程序以编程方式更改系统的日期和时间?

javascript - Spring-Boot Controller 无法识别来自 ajax 的数据