专栏首页技术趋势JVM-JConsole:Java监视与管理控制台(windows)

JVM-JConsole:Java监视与管理控制台(windows)

JConsole是什么?

JConsole(Java Monitoring and Management Console)是一款基于JMX(Java Manage-mentExtensions)的可视化监视、管理工具。

JConsole干什么用?

它的主要功能是通过JMX的MBean(Managed Bean)对系统进行信息收集和参数动态调整。JMX是一种开放性的技术,不仅可以用在虚拟机本身的管理上,还可以运行于虚拟机之上的软件中,典型的如中间件大多也基于JMX来实现管理与监控。虚拟机对JMXMBean的访问也是完全开放的,可以使用代码调用API、支持JMX协议的管理控制台,或者其他符合JMX规范的软件进行访问。

测试代码

class OOMObject {
    public byte[] placeholder = new byte[64 * 1024];

    public static void fillHeap(int num) throws InterruptedException {
        List<OOMObject> list = new ArrayList<OOMObject>();
        for (int i = 0; i < num; i++) {
// 稍作延时,令监视曲线的变化更加明显
            Thread.sleep(50);
            list.add(new OOMObject());
        }
        System.gc();
    }

    public static void main(String[] args) throws Exception {
        fillHeap(1000);
    }

}

配置

-Xms100m -Xmx100m -XX:+UseSerialGC
-Dcom.sun.management.jmxremote

使用

进入jdk bin 运行 jconsole.exe

运行进程进行连接

注意:运行异常

Exception in thread "VMPanel.connect" java.lang.InternalError: Remote thread failed for unknown reason
  at sun.tools.attach.WindowsVirtualMachine.enqueue(Native Method)
  at sun.tools.attach.WindowsVirtualMachine.execute(WindowsVirtualMachine.java:96)
  at sun.tools.attach.HotSpotVirtualMachine.executeCommand(HotSpotVirtualMachine.java:261)
  at sun.tools.attach.HotSpotVirtualMachine.executeJCmd(HotSpotVirtualMachine.java:243)
  at sun.tools.attach.HotSpotVirtualMachine.startLocalManagementAgent(HotSpotVirtualMachine.java:204)
  at sun.tools.jconsole.LocalVirtualMachine.loadManagementAgent(LocalVirtualMachine.java:239)
  at sun.tools.jconsole.LocalVirtualMachine.startManagementAgent(LocalVirtualMachine.java:98)
  at sun.tools.jconsole.ProxyClient.tryConnect(ProxyClient.java:333)
  at sun.tools.jconsole.ProxyClient.connect(ProxyClient.java:313)
  at sun.tools.jconsole.VMPanel$2.run(VMPanel.java:294)
Exception in thread "VMPanel.connect" java.lang.InternalError: Remote thread failed for unknown reason
  at sun.tools.attach.WindowsVirtualMachine.enqueue(Native Method)
  at sun.tools.attach.WindowsVirtualMachine.execute(WindowsVirtualMachine.java:96)
  at sun.tools.attach.HotSpotVirtualMachine.executeCommand(HotSpotVirtualMachine.java:261)
  at sun.tools.attach.HotSpotVirtualMachine.executeJCmd(HotSpotVirtualMachine.java:243)
  at sun.tools.attach.HotSpotVirtualMachine.startLocalManagementAgent(HotSpotVirtualMachine.java:204)
  at sun.tools.jconsole.LocalVirtualMachine.loadManagementAgent(LocalVirtualMachine.java:239)
  at sun.tools.jconsole.LocalVirtualMachine.startManagementAgent(LocalVirtualMachine.java:98)
  at sun.tools.jconsole.ProxyClient.tryConnect(ProxyClient.java:333)
  at sun.tools.jconsole.ProxyClient.connect(ProxyClient.java:313)
  at sun.tools.jconsole.VMPanel$2.run(VMPanel.java:294)

解决方法:在运行时加上参数如下

-Dcom.sun.management.jmxremote

查看内存情况

检测死锁

package com.jvm.view;

/**
 * @author: csh
 * @Date: 2020/12/16 17:04
 * @Description:
 */
public class ThradLock {
    /**
     * 线程死锁等待演示
     */
    static class SynAddRunalbe implements Runnable {
        int a, b;
        public SynAddRunalbe(int a, int b) {
            this.a = a;
            this.b = b;
        }
        @Override
        public void run() {
            synchronized (Integer.valueOf(a)) {
                synchronized (Integer.valueOf(b)) {
                    System.out.println(a + b);
                }
            }
        }
    }
    public static void main(String[] args) {
        for (int i = 0; i < 100; i++) {
            new Thread(new SynAddRunalbe(1, 2)).start();
            new Thread(new SynAddRunalbe(2, 1)).start();
        }
    }
}

最后

通过jconsole在windows平台算是一个所见即所得的好工具,不过现在很多开发真的很少用该工具来排查问题,希望本文对java开发同学在工作上有一定的帮助,辅助问题在本地解决。

文章分享自微信公众号:
技术趋势

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

作者:逍遥壮士
原始发表时间:2021-11-20
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • Jconsole-java监视和管理控制台的使用

    Jconsole 监控java程序时,在启动java程序时,加上以下选项就可以进行远程监控:

    yawn
  • Active Directory 持久性技巧 1:目录服务还原模式 (DSRM)

    每个域控制器都有一个用于 DC 的内部“Break glass”本地管理员帐户,称为目录服务还原模式 (DSRM) 帐户。提升 DC 时设置的 DSRM 密码,...

    Khan安全团队
  • JDK监控和故障处理工具总结

    jps(JVM Process Status) 命令类似 UNIX 的 ps 命令。

    Vincent-yuan
  • 渗透测试中的端口利用

    我们在进行渗透测试中,一般情况下会对端口进行扫描,看看服务器中开启了哪些端口,对应的端口一般存在对应的服务,而这些服务可能存在相应的漏洞,下面就是简单结束一下端...

    C4rpeDime
  • 电脑运行命令大全

    gpedit.msc-----组策略 dxdiag---------检查DirectX信息 rononce-p----15秒关机 sndrec32-------...

    I Tech You_我教你
  • 一篇文章带你了解当下主流的监控工具

    以往,在缺少告警机制的情况下,企业无法第一时间洞悉到系统发生故障,只能通过用户的反馈来获取,系统运维人员往往也只是充当了一个“救火” 队员,大面积的系统瘫痪往往...

    lyb-geek
  • Oracle Java Mission Control 帮助

    使用 Java Mission Control 可以监视和管理 Java 应用程序,而不会导致通常与这些工具类型相关的性能开销。它使用为 Java 虚拟机 (J...

    wuweixiang
  • OSSIM介绍

    | 版本 | 发行日期 | | 1.04 | 2008年2月23日 | | 2.1 | 2009年7月10日 | | 3.0 | 2011年9月16日 |...

    用户5760343
  • 针对端口的渗透测试总结大全

    在前段时间的渗透中,我发现通过端口来进行渗透有时会提升我们的效率,所以才有了这篇文章的诞生;

    天钧
  • JVM-8.JVM 性能监控 可视化

    JConsole(Java Monitoring and Management Console)是一个基于JMX(Java Management Extensi...

    悠扬前奏
  • SCOM 2012 sp1 安装篇(一)

    最大的一个功能是能够支持监控windwos server 2012与windows 8,并且还支持Centos,Debian,Oracle和ubuntu lin...

    SuperDream
  • 《深入理解Java虚拟机》读书笔记(四)–虚拟机性能监控与故障处理工具

    可以列出正在运行的虚拟机进程,并显示虚拟机执行主类名称(main函数所在类)以及这些进程的本地虚拟机唯一ID(Local Virtual Machine Ide...

    Java架构师必看
  • windows XP cmd命令大全 (1)

    accwiz.exe -> 辅助工具向导 acsetups.exe -> acs setup dcom server executable actmovie...

    赵腰静
  • Java JVM监控工具JConsole简介

    -interval=n 将监视图的刷新间隔时间设置为n 秒(默认值为 4 秒)

    授客
  • 你可以使用这些工具来图形化管理Docker

    您是否还在命令行窗口中来监视 Docker 容器?乐此不彼地敲着 Docker 相关的命令,虽然这些命令并不是很复杂。今天胖哥来介绍几款 Docker 的 GU...

    码农小胖哥
  • 盘点那些年我们一起玩过的网络安全工具

    大家好,我是IT共享者,人称皮皮。这篇文章,皮皮给大家盘点那些年,我们一起玩过的网络安全工具。

    前端皮皮
  • 盘点那些年我们一起玩过的网络安全工具

    这是一个检测和删除恶意的软件,包括蠕虫,木马,后门,流氓,拨号器,间谍软件等等。快如闪电的扫描速度,具有隔离功能,并让您方便的恢复。包含额外的实用工具,以帮助手...

    Python进阶者
  • 简单理解JVM优化

    所有正在运行的线程的栈上的引用变量。所有的全局变量。所有ClassLoader。。。

    烂猪皮
  • Git下载安装手把手教程[通俗易懂]

    Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。下面我们来详细介绍下,在windows 10系统下载...

    全栈程序员站长

扫码关注腾讯云开发者

领取腾讯云代金券