如何使用 visualvm 查找内存泄漏

2022-09-01 09:57:16

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

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

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

提前致谢。


答案 1

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

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

此文件可以通过MAT- 查看详情,请参阅如何分析 .hprof 文件?


答案 2

推荐