如何使用visualvm查找内存泄漏

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

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

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

提前致谢。

使用visualvm分析内存泄漏并不容易。 它有一个名为’sampler’的工具/插件。 这可以用于采样内存或CPU。 您可以定期拍摄快照并查找可能的泄漏。 以下是如何使用它的一些细节 – 从快速搜索获得

更有效的方法是获取堆转储(例如,当应用程序减速或OOM发生时 )。 VisualVM帮助您获取heapdump(在Monitor选项卡上使用Heap Dump

此文件可以通过MAT进行分析 – 有关详细信息,请参阅如何分析.hprof文件? 和http://memoryanalyzer.blogspot.in/