一、基本概述

jconsole:

  • 从Java5开始,在JDK中自带的java监控和管理控制台。
  • 用于对JVM中内存、线程和类等的监控,是一个基于JMX(java management extensions )的GUI性能监控工具

官方教程:
https://docs.oracle.com/javase/7/docs/technotes/guides/management/jconsole.html

二、启动

jdk/bin目录下,启动jconsole.exe
测试代码

  1. package studies.jvm.jconsole;
  2. import java.util.ArrayList;
  3. import java.util.Random;
  4. /**
  5. * @Date: 2021/5/13
  6. * @Time: 7:47
  7. * @BelongsProject base
  8. * @BelongsPackage studies.jvm.jconsole
  9. * -Xms600m -Xmx600m -XX:SurvivorRatio=8
  10. */
  11. public class HeapInstanceTest {
  12. byte[] buffer = new byte[new Random().nextInt(1024 * 100)];
  13. public static void main(String[] args) {
  14. try {
  15. Thread.sleep(3000);
  16. } catch (InterruptedException e) {
  17. e.printStackTrace();
  18. }
  19. ArrayList<HeapInstanceTest> list = new ArrayList<>();
  20. while (true){
  21. list.add(new HeapInstanceTest());
  22. try {
  23. Thread.sleep(10);
  24. } catch (InterruptedException e) {
  25. e.printStackTrace();
  26. }
  27. }
  28. }
  29. }

启动:
image.png
image.png

三、三种连接方式

3.1、local

使用JConsole连接一个正在本地系统运行的JVM,并且执行程序的和运行JConsole的需要是同一个用户。JConsole使用文件系统的授权通过RMI连接器连接到平台的MBean服务器上。这种从本地连接的监控能力只有Sun的JDK具有。

3.2、Remote

使用下面的URL通过RMI连接器连接到一个JMX代理,service:jmx:rmi:///jndi/rmi://hostName:portNum/jmxrmi。JConsole为建立连接,需要在环境变量中设置mx.remote.credentials来指定用户名和密码,从而进行授权。

3.3、Advanced

使用一个特殊的URL连接JMX代理。一般情况使用自己定制的连接器而不是RMI提供的连接器来连接JMX代理,或者是一个使用JDK1.4的实现了JMX和JMX Rmote的应用。