我怀疑我们的 ActiveMQ 连接桥存在重大内存泄漏 - 我们看到了典型的内存泄漏模式(应用程序加载良好,如果长时间运行或在短时间内一遍又一遍地重新启动,则速度会变慢) 。我查找了查找 Java 内存泄漏的现代最佳实践,许多开发人员似乎正在放弃 jhat/jmap 等传统工具,以代替新的(呃)工具jvisualvm
.
启动此工具(并花费几个小时阅读其教程)后,我能够获取 CPU 和内存的分析器快照。
我现在有点卡住了——如何分析这些快照来识别泄漏?关于如何使用 jvisualvm 生成快照的文档有很多,但关于如何真正理解它们的文档却很少。
提前致谢。
使用 VisualVM 分析内存泄漏并不那么容易。它有一个名为“采样器”的工具/插件。这可用于对内存或 cpu 进行采样。您可以定期拍摄快照并查找可能的泄漏。以下是有关如何使用它的一些详细信息 - 获取自快速搜索 http://java.dzone.com/announcements/visualvm-12-great-java
更有效的方法是获取堆转储(例如,当应用程序变慢或当OOM 发生 https://stackoverflow.com/questions/542979/using-heapdumponoutofmemoryerror-parameter-for-heap-dump-for-jboss)。 VisualVM 帮助您进行堆转储(使用堆转储 on Monitor tab)
可以通过以下方式分析该文件MAT http://wiki.eclipse.org/index.php/MemoryAnalyzer#Finding_Memory_Leaks- 一些细节在这里如何分析 .hprof 文件? https://stackoverflow.com/questions/185893/how-do-i-analyze-a-hprof-file-
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)