【一】前期准备
1.类文件准备
public class DeadCirclw {
public static void main(String[] args) {
while (true){
System.out.println(System.currentTimeMillis());
}
}
}
2.类文件执行
java -jar practice.jar (ps:idea如何打jar包->)
【二】中期执行
1.将刚刚的文件放到linux服务器(我用VMware搭建的ubantu虚机,将本机E盘进行共享)上
cp /mnt/hgfs/E/zip/practice.jar /jar
cp:copy 即复制意思,/mnt/hgfs/E/zip是共享文件夹路径 最后的/jar是我在ubantu上创建的用来放jar的文件夹
2.jar文件未启动前CPU情况
最高的不过9.6%
3.启动带死循环的jar文件后的CPU使用情况
3.1 启动命令:
nohup java -jar practice.jar &
为什么使用nohup?
常见的 java -jar启动后,一旦切换窗口程序就停止运行
使用nohup(不挂断执行命令) + &(后台运行) 规避掉
3.2 启动后
CPU已经飙升到97%,几乎占满CPU。
【三】定位线程
1.查看进程下的线程信息:
PID:process ID 进程ID(系统是由多个进程运行服务,进程中包含多个线程具体执行任务)
要让top输某特定进程并检查该进程内运行线程状况:
top -H -p 4376
命令解释:查看进程号为4376中具体的线程信息此时PID可看作线程号(线程信息见下图)。
2.10进制转16进制:
注意点:引号是英文状态下的,0x%x代表转换为16进制 \n代表换行
3.查看具体线程信息
-
图中最上一行:jstack 4376|grep 111c -A100 查看进程4376下面的111c线程的100行信息
-
图中最下一行:说明了死循环的位置
到此结束。