30

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

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

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

提前致谢。

4

1 回答 1

28

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

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

该文件可以通过MAT进行分析- 如何分析 .hprof 文件?

于 2012-02-06T06:05:07.150 回答