1.查询cpu消耗最大的进程
jps 先找出来那些java进程
top 命令查看那些java进程消耗的cpu比较大
2.查找占用内存最大的线程
1.命令:ps p pid -l -o pcpu,pid,tid,time,tname,cmd
%cpu pid tid time tty cmd 0.0 32060 32060 00:00:00 ? /data/java 0.0 32060 32061 00:00:00 ? /data/java
打印线程的10进制格式为16进制格式(tid对应的那一列):
printf "%x\n" 320617d3d
3.查询jstack中对应的线程信息
[root@10-10-244-163 ~]# jstack 32060|grep 7d3d -c 10 at java.lang.ref.finalizer$finalizerthread.run(finalizer.java:216)"reference handler" #2 daemon prio=10 os_prio=0 tid=0x00007f6dc0108000 nid=0x7d41 in object.wait() [0x00007f6da99cb000] java.lang.thread.state: waiting (on object monitor) at java.lang.object.wait(native method) at java.lang.object.wait(object.java:502) at java.lang.ref.reference.tryhandlepending(reference.java:191) - locked <0x00000000c08d0ab8> (a java.lang.ref.reference$lock) at java.lang.ref.reference$referencehandler.run(reference.java:153)"main" #1 prio=5 os_prio=0 tid=0x00007f6dc000d000 nid=0x7d3d runnable [0x00007f6dc9e1a000] java.lang.thread.state: runnable at java.net.plainsocketimpl.socketaccept(native method) at java.net.abstractplainsocketimpl.accept(abstractplainsocketimpl.java:409) at java.net.serversocket.implaccept(serversocket.java:545) at java.net.serversocket.accept(serversocket.java:513) at org.apache.catalina.core.standardserver.await(standardserver.java:453) at org.apache.catalina.startup.catalina.await(catalina.java:777) at org.apache.catalina.startup.catalina.start(catalina.java:723) at sun.reflect.nativemethodaccessorimpl.invoke0(native method) at sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62)
以上就是jvm内存泄漏排查流程的详细内容。