JDK可视化命令

JDK可视化命令,第1张

JDK可视化命令

jconsole

查看Java应用程序运行时情况,监视垃圾收集器的内存变化趋势,以及监视程序内的线程。在控制台输入jconsole即可启动JConsole客户端

 

JConsole客户端包括概览、内存、线程、类、VM概要、MBean这大块。

概览:主要运行数据的概览,包括堆内存,线程,类,CPU使用情况四项信息的变化趋势图

内存:可以监视堆内存以及其中各个区域(Eden区,Survivor区,老年代)的变化趋势,还可以监视非堆(元空间)的内存变化趋势,相当于命令行中的jstat

 

线程:可以查看当前程序有哪些线程在运行,单机可以查看线程的堆栈信息,相当于命令行工具的jstack,其左下角还有检测死锁的按钮。

 类:如图所示,显示了系统以及装载的类数量。在详细信息栏中,还显示了已卸载的类数量。

 

 

 

jvisualvm

jvisualvm用来解决Java代码产生的问题,下面用一个死锁的案列来进行说明

 Thread thread = new Thread() {
          @Override
          public void run() {
              synchronized (integer1){
                  System.out.println("lock1获取到integer1对象");
                  synchronized (integer2){
                      System.out.println("获取到integer2对象");
                  }
              }
          }
      };
      Thread thread1 = new Thread(){
          @Override
          public void run(){
              synchronized (integer2){
                  System.out.println("lock2获取到integer2对象");
                  synchronized (integer1){
                      System.out.println("获取到integer1对象");
                  }
              }
          }
      };
      thread.start();
      thread1.start();

 在控制台输入jvisualvm命令,选择我们的线程

 点击线程后,由图可知已经检测到了死锁问题

 再点击线程dump后就可以在该页面找到对应Java代码中出现的问题位置

 这样我们就可以快速的找到代码出现问题的地方,快速的解决debug

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5118980.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存