分析Java PS Old Gen和可能的内存泄漏

时间:2018-02-08 10:48:54

标签: java memory-leaks garbage-collection

使用Jmeter我对使用Java Spring Boot和Cassandra后端构建的微服务运行1500每秒事务处理,我怀疑内存泄漏。

分析什么是查看填充此内存的最佳方法的最佳方法是什么?

PS Old Gen当前容量: PS Old Gen Current Capacity

PS旧Gen最大容量百分比 Percentage of Maximum Capacity

1 个答案:

答案 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。