使用top及jstack查看某个java线程CPU占用情况时报错:

Unable to open socket file: target process not responding or HotSpot
VM not loaded The -F option can be used when the target process is not responding

出错原因:jstack命令使用了jstack +线程号(不是具体线程号,而是java进程号),具体使用如下:

  1. top命令查看CPU占用情况
  2. top -h 27489 查看java进程cpu情况, top界面下按大写H 查看每个线程CPU情况
  3. 看到27489 java进程中27490线程占用高额CPU
  4. 计算27490的十六进制表示,得到6b62
Integer s = 27490;
System.out.println(Integer.toHexString(s));
  1. 使用jstack查看进程号为27489的Java应用中十六进制线程号为6b62的堆栈信息(开始用的是27490进程号)
jstack 27490 |grep -A 50 6b62   //错误用法!!!
jstack 27489 |grep -A 50 6b62    //-A 50显示的堆栈行数


准确定位到具体类CpuTest的main方法21行代码处。

更多推荐

Unable to open socket file: target process not responding or HotSpot VM not load