如何使用visualvm查找内存泄漏

时间:2012-02-06 01:45:31

标签: java memory-leaks profiling jvisualvm

我怀疑我们的ActiveMQ连接桥有一个主要的内存泄漏 - 我们看到典型的内存泄漏模式(应用程序加载正常,如果长时间运行或在短时间内一遍又一遍地重新启动会减慢时间)。我查找了查找Java内存泄漏的现代最佳实践,许多开发人员似乎放弃了传统工具,如jhat / jmap,而不是新的(呃)jvisualvm

启动此工具(并花了几个小时阅读其教程)后,我可以为CPU和内存拍摄探查器快照。

我只是在这一点上陷入困​​境 - 如何分析这些快照来识别泄漏?关于如何使用jvisualvm生成快照的文档很多,但关于如何真正理解它们的文档很少。

提前致谢。

1 个答案:

答案 0 :(得分:26)

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

获取

更有效的方法是获取堆转储(例如,当应用程序放慢速度或OOM happens时)。 VisualVM帮助您进行heapdump(在监视器选项卡上使用堆转储

此文件可由MAT进行分析 - 有些详细信息,请访问How do I analyze a .hprof file?http://memoryanalyzer.blogspot.in/