1.top命令

Linux命令。可以查看实时的内存或cpu使用情况。

进入后按M为按内存占用大小排序。

按P为按cpu占用大小排序。

通过top命令找到cpu或者内存占用较高的进程的pid

2.cpu占用过高

2.1 top -H -p [pid] 查看进程中的线程,得到cpu占用高的线程的tid

2.2 jstackt [pid] | grep [tid] (tid要转换为16进制)查看线程的堆栈状态,分析cpu占用过高的原因。

3.内存占用过高

3.1 jmap -histo:live [pid],然后分析具体的对象数目和占用内存大小,从而定位代码。

jmap -histo:live [pid] 可以查看当前Java进程创建的活跃对象数目和占用内存大小。

3.2 jmap -dump:live,format=b,file=xxx.xxx [pid],然后利用MAT工具分析是否存在内存泄漏等等

jmap -dump:live,format=b,file=xxx.xxx [pid] 则可以将当前Java进程的内存占用情况导出来,方便用专门的内存分析工具(例如:MAT)来分析。