一、内存泄露的原因
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(查看对象在内存中的占用情况)