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	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值