内存泄露和CPU持续升高问题排查与解决

一、内存泄露的原因

1.对象没有被回收

2.IO流没有正常关闭,导致持续占用资源

二、CPU持续升高

1.存在死循环,导致程序无法退出,持续占用cpu

2.存在并发,大量线程在抢占cpu资源

三、响应速度慢

1.jvm频繁进行fullgc,导致服务终端

2.线程阻塞,导致大量请求阻塞

四、常用的排查命令

jstat -gcutil pid 1000 1000 (查看垃圾回收情况,pid替换成进程id,一秒执行一次,循环一千次)

 

jstack pid(查看线程的堆栈信息)

 

jmap -histo:live pid| head -n 200(查看对象在内存中的占用情况)

 

————————————————
版权声明:本文为CSDN博主「明月清风_Dustin」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_30525851/article/details/93878190

原文地址:https://www.cnblogs.com/javalinux/p/15711029.html