使用Jmeter我对使用Java Spring Boot和Cassandra后端构建的微服务运行1500每秒事务处理,我怀疑内存泄漏。
分析什么是查看填充此内存的最佳方法的最佳方法是什么?
答案 0 :(得分:1)
转储内存并使用MAT
进行分析使用jmap转储内存:
jmap –dump:format=b,file=<filename> <pid>
或者在发生OOM时让jvm自行转储,方法是将以下内容添加到java args:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=<file-path>
然后用MAT来分析转储文件,MAT会告诉你内存泄漏可疑,你也可以在转储时浏览堆中的所有对象。
还有一种更容易但不太精确的方法来定位消耗大多数堆内存的对象:
jmap -histo:live <pid>
这将打印按类汇总的所有生物对象的内存成本。但是使用这种方法很难确定问题所在。我建议使用MAT。