1. top命令看一下JAVA进程:
占用500%多,非常恐怖,程序卡得动不了了。
2. 使用命令top -H -p PID 此处PID就是上一步获取的进程PID,我的PID是13342,通过此命令可以查看实际占用CPU最高的的线程的ID,此处几位TID
3.获取对应线程的线程栈信息
- 使用命令printf "%x\n" tid,将线程ID转换为16进制
printf "%x\n" 13345
使用命令jstack PID(进程pid) |grep tid(线程pid16进制) -A 50,此处tid为上一步转换后的16进制,使用此命令可以查看到对应线程的线程栈信息,从对根据线程栈对对应的代码进行分析
jstack 13342|grep 3421 -A 50 看到异常信息:
或者将近信息直接输到根目录的这个文件下面:
jstack -l 13342 >> jstackLog.out
使用 命令打开文件查看异常信息:
more jstackLog.out
可以按回车往下滚动
可以看到错误类信息:
最后就是代码上优化了,我这边是导出数据太大,循环创建对象导致的错误。