1.cpu超高分析
1、找到要分析的进程
ps -ef|grep XXX
2、查看具体进程里的信息 top -H -p 22423
3、打印进程的堆栈信息 jstack -l 22423 >> 6.txt
4、把2步骤里占用cpu最高的线程 转为16进制 printf "%x\n" 31218 ,然后根据16进制在堆栈日志里查找堆栈。
2、内存泄漏分析
(1)打开jvisualVM,打进入要分析的java进程的监视选项卡,点击 堆dump,生成C:\Users\wangna\AppData\Local\Temp\visualvm.dat\localhost_31996\heapdump-1590374952368.hprof文件。
(2)使用MemoryAnalyzer.exe (D:\tools\MemoryAnalyzer-1.10.0.20200225-win32.win32.x86_64\mat),双击打开
file -> open file 打开heapdump-1590374952368.hprof文件。进入 Leak Suspects,分析给出的Problem Suspect 点击进入Details,分析代码,查看各个类对象的个数。
(3)还可以点击 System Overview,查看系统使用内存情况以及各个线程使用内存情况和大对象的使用情况。
在linux 上根据进程号导出.hprof文件
jmap -dump:format=b,file=flink.hprof 31622
在linux上查看各个类的实例数和内存占用大小:
jmap -histo 6902
3、查看GC
jstat -gcutil 6902 2000 10 (6902为进程号,可以观察该进程的GC情况)
原文:https://www.cnblogs.com/luckyna/p/13790242.html