第一步先找出Java进程ID,我部署在服务器上的Java应用名称为mrf-center: root@ubuntu:/#ps-ef|grepmrf-center|grep-vgreproot217111114:47pts/300:02:10java-jarmrf-center.jar 得到进程ID为21711,第二步找出该进程内最耗费CPU的线程,可以使用ps -Lfp pid或者ps -mp pid -o THREAD, tid, time或者top -Hp...
通过ps aux | grep PID命令,可以进一步确定是tomcat进程出现了问题。但是,怎么定位到具体线程或者代码呢? 首先显示线程列表: ps -mp pid -o THREAD,tid,time 找到了耗时最高的线程28802,占用CPU时间快两个小时了! 其次将需要的线程ID转换为16进制格式: 最后打印线程的堆栈信息: jstack pid |grep tid -A 30 ...
1、找到cpu占用高的进程pid 在top中,按组合键: shift + h ,会按cpu使用从高到低排序 2、找到cpu占用高的线程pid top -Hp cpu高的进程pid, shift +h 查找最高线程,显示线程 3、jstack 进程的pid | grep -A 线程pid的十六进制 #分析Java应用程序线程堆栈dump出来 printf "%x\n" cpu高的线程pid ==》 ...
root@ubuntu:/# ps-ef|grep mrf-center|grep-v grep root217111114:47pts/300:02:10java-jar mrf-center.jar 得到进程ID为21711,第二步找出该进程内最耗费CPU的线程,可以使用ps -Lfp pid或者ps -mp pid -o THREAD, tid, time或者top -Hp pid,我这里用第三个,输出如下: TIME列就是各个Java线程耗费的...
我们先用 ps 命令找到对应进程的pid(如果你有好几个目标进程,可以先用top看一下哪个占用比较高)。 接着用top -H -p pid来找到 CPU 使用率比较高的一些线程 然后将占用最高的 pid 转换为 16 进制printf '%x\n' pid得到 nid 接着直接在 jstack 中找到相应的堆栈信息jstack pid |grep 'nid' -C5 –color...
jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多。下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息,用到的命令有ps、top、printf、jstack、grep。 第一步先找出Java进程ID,我部署在服务器上的Java应用名称为mrf-center: ...
用“kill -3 <pid>” ,或者 “kill – QUIT <pid>”。 Pid是用所关注的 JAVA进程号,您可以用 “ps -ef | grep java” 找到,或者使用 JDK 5.0中的 “jps -v” 命令获得。 在各个操作系统平台,都可以用 JDK 5.0工具包中的 jstack <pid>
使用命令top -p <pid> ,显示你的java进程的内存情况,pid是你的java进程号,比如19663 2,按H,获取每个线程的内存情况 3,找到内存和cpu占用最高的线程tid,比如19664 4,转为十六进制得到 0x4cd0,此为线程id的十六进制表示 5,执行 jstack 19663|grep -A 10 4cd0,得到线程堆栈信息中 4cd0 这个线程...
root@ubuntu:/# ps -ef | grep mrf-center | grep -v grep root 21711 1 1 14:47 pts/3 00:02:10 java -jar mrf-center.jar 1. 2. 得到进程ID为21711,第二步找出该进程内最耗费CPU的线程,可以使用ps -Lfp pid或者ps -mp pid -o THREAD, tid, time或者top -Hp pid,我这里用第三个,输出如...
jstack [-l] pid 1. 主要分为两个功能: a. 针对活着的进程做本地的或远程的线程dump; b. 针对core文件做线程dump。 jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请...