1、使用命令查看
top命令
2、找到占cpu高的pid
使用jstack pid >xxx.txt
3、然后shift+h找到进程号
找到进程号后查看他的pid是多少
4、jstack 输出的日志中nid(十六进制)=pid(十进制)
查看对应pid的代码具体在哪一行
ps:将39(十进制)转换为十六进制
printf "%x \n" 39
定位pid找到报错位置
分析:BLOCKED 因线程阻塞引起的 具体位置为
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:171)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:131)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:335)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:431)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:390)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:235)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:228)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:183)
创建客户端时候可能太慢阻塞了