0
点赞
收藏
分享

微信扫一扫

JVM基础3

双井暮色 2022-02-27 阅读 70
java

JVM常用命令

jps

查看java进程

jinfo

(1)实时查看和调整JVM配置参数

(2)查看用法
jinfo -flag name PID 查看某个java进程的name属性的值。

在这里插入图片描述

(3)修改
参数只有被标记为manageable的flags可以被实时修改

jinfo -flag [+|-] PID 
 jinfo -flag <name>=<value> PID

jstat

(1)查看虚拟机性能统计信息

(2)查看类装载信息

查看某个java进程的类装载信息,每1000毫秒输出一次,共输出10次

(3)查看垃圾收集信息

在这里插入图片描述

jstack

(1)查看线程堆栈信息

(2)用法

(3)排查死锁案例

//运行主类
public class DeadLockDemo {
    public static void main(String[] args)
    {
        DeadLock d1=new DeadLock(true);
        DeadLock d2=new DeadLock(false);
        Thread t1=new Thread(d1);
        Thread t2=new Thread(d2);
        t1.start();
        t2.start();
    }
}
//定义锁对象 class MyLock{
    public static Object obj1=new Object();
    public static Object obj2=new Object();
}
//死锁代码
class DeadLock implements Runnable{
    private boolean flag;
    DeadLock(boolean flag){
        this.flag=flag;
    }
    public void run() {
        if(flag) {
        while(true) {
            synchronized(MyLock.obj1) {
            System.out.println(Thread.currentThread().getName()+"----if获得obj1锁");
            synchronized(MyLock.obj2) {
    System.out.println(Thread.currentThread().getName()+"----if获得obj2锁");
    								}
    							}
    		}
    }
else {
    while(true){
		synchronized(MyLock.obj2) { 	System.out.println(Thread.currentThread().getName()+"----否则获得obj2锁");
		synchronized(MyLock.obj1) {
        System.out.println(Thread.currentThread().getName()+"---
-否则获得obj1锁");
					}
				} 
			}
		} 
	}
}

运行结果:
在这里插入图片描述
jstack分析:

举报

相关推荐

0 条评论