性能测试全栈笔记:60.性能案例分析-内存泄露
本期专题:性能测试全栈笔记:60.性能案例分析-内存泄露
1.查看JVM运行状态的命令
- 监控jvm的GC情况
jstat -gcutil pid 1000 100
- 查看jvm配置信息
jmap -heap pid
:可以看到java进程的堆的配置信息,各区的空间大小和配置信息
- 查看jvm中类和对象的占用情况
jmap -histo 5279 | head -20
:查看jvm中各个类的实例数、占用内存数量以及类的全名
- 堆文件dump
jmap -dump:format=b,file=m.hdump 17777
:对堆内存进行dump,以文件的形式进行保存下来,可以用jvisualvm等工具对文件进行分析
2.内存泄露有什么现象?
- tps出现大幅波动,并慢慢降低,甚至降为0,响应时间随之波动,慢慢升高
- 通过jstat命令看到,Jvm中Old区不断增加,FullGC非常频繁,对应的FullGC消耗的时间也不断增加
- 通过jconsole/jvisualvm可以看到,堆内存曲线不断上升,接近上限时,变成一条直线
- 日志报错
java.lang.OutOfMemoryError: Java heap space