jvm调优案例分析-window通过jstack查找死锁的进程

我们经常会遇到java程序遇死锁的问题,也会经常遇到。

案例

以下是案例代码:

package com.dzend.mall.order;

public class JstackLockDemo {


    public static final int initData =666;
    public static User user = new User();

    public int compute(){
        int a=1;
        int b=2;
        int c=(a+b)*10;
        return c;
    }

    public static void main(String[] args) {
        JstackLockDemo jstackLockDemo = new JstackLockDemo();
        while(true) {
            jstackLockDemo.compute();
        }
    }
}
class User{
    private int id;
    private String username;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}

一、运行这个程序JstackLockDemo

二、用jps找出当前的pid

pid为1836

三、启动Process Explorer

1、下载地址:

进程资源管理器 - Sysinternals | Microsoft Learn了解哪些文件、注册表项和其他对象进程已打开,它们已加载了哪些 DLL 等。icon-default.png?t=N7T8https://docs.microsoft.com/zh-cn/sysinternals/downloads/process-explorer

2、下载完,启动程序

3、找到pid为1836的进程,右键properties

4、查找到cpu资源使用高的的线程,线程ID:23396

四、用jstack工具收集该进程日志

1、在命令行输入

jstack 1836 > d://1836.out

 2、到d盘去查看,已经保存了1836.out

3、用记事本打开查看详细信息

把23396转化成16进制的5b64,用查找5b64

就能看到第19行的代码有问题,再进一步分析

  • 33
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值