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分析:










