Linux中监控jvm查找问题代码行

[root@VM_0_13_centos ~]# top  --使用top查看系统资源使用情况

可以看到java进程占用CPU到达了98.3% 记住上面的线程ID10279后面有用

1、通过上面得到的进程ID查找进程下线程的CPU线程占比

[root@VM_0_13_centos ~]# top Hp 10279


可以看到线程号为1029010289的两个线程CPU占比较高,记住它两。

2、进行进制转换将10进制的线程id转换为16进制

10290 -> 0x2832
10289 -> 0x2831

3、将java进程的日志保存

jstack 10279 > 10279.log

以上命令的意思是将pid为10279的进程日志输出到桌面名字为10279.log

jstack是java虚拟机自带的一种堆栈跟踪工具,安装好jdk后bin目录下就有这个程序。

3、通过上面得到的16进制线程id0x28320x2831,在日志中找到产生该线程的代码行。

[root@VM_0_13_centos ~]# cat -n Demo_CPU.java 
     1	public class Demo_CPU {
     2		public static void main(String[] args) throws InterruptedException {
     3	
     4			cpuFix();
     5		}
     6	
     7		public static void cpuFix() throws InterruptedException {
     8	
     9			for (int i = 0; i < 2; i++) {
    10				new Thread(new Runnable() {
    11	
    12					@Override
    13					public void run() {
    14						while (true) {
    15							Math.sqrt(4);
    16						}
    17					}
    18				}).start();
    19			}
    20		}
    21	}
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:设计师小姐姐 返回首页