java - 如何使用 visualvm 查找内存泄漏

标签 java memory-leaks profiling jvisualvm

我怀疑我们的 ActiveMQ 连接桥中存在严重的内存泄漏 - 我们看到了典型的内存泄漏模式(应用加载正常,如果长时间运行或在短时间内反复重新启动会变慢时间)。我查找了查找 Java 内存泄漏的现代最佳实践,许多开发人员似乎正在放弃像 jhat/jmap 这样的传统工具来代替新的(er)jvisualvm

启动此工具后(并花几个小时阅读其教程),我能够为 CPU 和内存拍摄分析器快照。

我只是在这一点上卡住了 - 我如何分析这些快照以识别泄漏?关于如何使用 jvisualvm 生成快照的文档很多,但关于如何真正理解它们的文档却很少。

提前致谢。

最佳答案

使用 visualvm 分析内存泄漏并不容易。它有一个名为“sampler”的工具/插件。这可用于对内存或 cpu 进行采样。您可以定期拍摄快照并查找可能的泄漏。以下是有关如何使用它的一些详细信息- 来自 quick search

更有效的方法是获取堆转储(比如当应用程序变慢或 OOM happens 时)。 VisualVM 帮助您进行 heapdump(在 Monitor 选项卡上使用 Heap Dump)

这个文件可以被 MAT 分析- 一些细节在这里How do I analyze a .hprof file?

关于java - 如何使用 visualvm 查找内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9154785/

相关文章:

ios - UIGraphicsGetImageFromCurrentImageContext() - 内存泄漏

java - java.awt.Image 对象使用的内存

java - 如何从java中的hashmap中删除字符串数组值?

java - 如何在java中快速有效地从列表中创建子集或powerSet?

java - Gradle包括JavaFX for Heroku

c++ - 如何检测 C++ 中未分配内存的双重删除或删除?

c++ - 提高 OpenCV 中 Mat 像素访问的性能

google-chrome-extension - 从 Javascript 触发堆分析?

java - 写入 CSV 文件时,超过 15 位的数字将转换为 0

java - 如何构建具有开始和结束字符验证的验证正则表达式?