控制台虚拟机性能监控与故障处理工具

虚拟机性能监控与故障处理工具

jps虚拟机进程状况工具

可以列出正在运行的虚拟机进程,并显示虚拟机执行主类名称,以及进程的本地虚拟机唯一ID

 

jstack java堆栈跟踪工具

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

public class TDeadLock {

   public static String lock1=new String();

   public static String lock2=new String();

   

   static class ThreadA implements Runnable{

   public ThreadA(){

   

   }

@Override

   public void run() {

synchronized (lock1) {

try {

Thread.sleep(1000);

synchronized (lock2) {

System.out.println("lock2");

}

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

   }

   }

   

   static class ThreadB implements Runnable{

    public ThreadB(){

   

    }

@Override

public void run() {

synchronized (lock2) {

try {

Thread.sleep(1000);

synchronized(lock1){

System.out.println("lock1");

}

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

   }

   

   public static void main(String[] args) {

   Thread t1=new Thread(new TDeadLock.ThreadA());

   Thread t2=new Thread(new TDeadLock.ThreadB());

   t1.start();

   t2.start();

   }

}

 

现象描述 如上所示程序在运行时,突然卡死出现死锁

解决方案

 

通过jps命令可以查看死锁进程,并通过jstack可以死锁的进程进行分析,得出分析结果。

 

如上图所示是死锁的程序的

Jstat虚拟机统计信息监控工具

是用于监视虚拟机各种运行状态信息的命令工具。它可以用来显示远程或本地虚拟机的类装载,内存,垃圾收集,JIT编译等的运行数据。在没有GUI图形界面,只提供了纯文本控制台环境的服务器上。它将是运行定位虚拟机性能问题的首选工具。

 

E表示Eden区,S0,S1表示幸存区,O表述老年代,这几个区域都可以查看堆区所使用内存的百分比,YGC可以显示年青代GC的回收次数,YGCT可以显示年前代GC的回收时间,FGC就一显示整个GC的回收次数与回收时间以及 GCT总的回收时间。

jinfo java配置信息工具

jmap java内存映像工具

jmap命令用于生成转储快照,如果不使用jmap命令,要想获取java堆转储快照,就要配置虚拟机参数来预防了-XX:+HeapDumpOnOutOfMemoryError参数,或者通过-XX:+HeadDumpOnCtrlBreak 参数可以使用键让虚拟机生成dump文件。

jmap的作用并不仅仅是为了获取dump文件,它还可以查询finalize执行队列等

 

通过jmap -heap pid可以查看堆内存的使用情况等等。

 

通过jmap -dump可以生成虚拟机转储快照。

jhat 虚拟机堆转储快照分析工具

jhat内置一个http服务器,生成的dump文件分析结果,可以在浏览器中进行查看。

 

地址localhost:7000就可以看到,如下所示是我准备的一个死锁程序的分析结果。

 

以上这些命令,都有对应的可视化工具可以进行查看。


猜你喜欢

转载自blog.csdn.net/worn_xiao/article/details/81052975
今日推荐