JVM调优你居然不会看JConsole

1.什么是JConsole?

Jconsole (Java Monitoring and Management Console),一种基于JMX的可视化监视、管理工具。

JConsole 是从java开始引入的一个java性能分析器,可以从命令行或在 GUI shell 中运行来监控jvm运行的情况

2.如何启动?

两种方式启动:

  • 1.java 安装目录JDK目录下/bin里面 jconsole.exe 双击运行
    在这里插入图片描述
  • 2.打开cmd 直接运行: jconsole
    在这里插入图片描述
    然后会弹出一个可视化界面如下:
    在这里插入图片描述

3.介绍如何使用和查看参数

在这里插入图片描述
上图是我本地启动了一个springboot项目,来进行测试,如上图MailApplication,选择后点击链接,点击不安全链接,成功后进入如下页面

在这里插入图片描述
在tab页面可以看到一些相关的选项卡:
概览 内存 线程 类 vm 概要 Mbean

3.1 概览介绍

概览里有(可按照时间范围):
堆内存: 已经使用情况 已经提交 最大情况
线程: 有活动 峰值 总计
类: 已经加载 已卸载 总计
cpu 占用率

3.2 内存

在这里插入图片描述
内存的话要注意三个地方,如上图
内存使用量

  • 非堆内存使用量:即为内存使用情况
  • 内存池"PS Old Gen" : JVM的老年代
  • 内存池"PS Eden Space": JVM的年轻代,当一个对象new 出来后会在Eden Space ,直到GC到来,GC会逐一问清楚每个对象是否存在引用,进入Survivor Space(幸存区)没有引用将被kill。
  • 内存池 “PS Survivor Space”:幸存区,幸存者区的对象可以活段时间,GC会定期(可以自定义)会对这些对象进行访问,如果该对象的引用不存在了将被kill,如果每次访问该对象都存在引用,将被转移到老年代。(用于保存在eden space内存池中经过垃圾回收后没有被回收的对象。)
  • 内存池"Metaspace" :元空间,大部分类元数据都在本地内存中分配。用于描述类元数据的“klasses”已经被移除。默认情况下,类元数据只受可用的本地内存限制(容量取决于是32位或是64位操作系统的可用虚拟内存大小)。
  • 内存池"Code Cache":代码缓存区。HotSpot Java虚拟机包括一个用于编译和保存本地代码(native code)的内存。
  • 内存池"Compressed Class Space": 压缩空间

执行GC:点击可以执行GC操作
详细信息:即为每个选项的详细参数

3.3 线程

在这里插入图片描述
如上图所示: 左下角显示所有的活动线程,(如果线程过多,可以在下面的过滤栏中输入字符串过滤出你想要观察的线程)。点击某个显示会显示这个线程的名称、状态、阻塞和等待的次数、堆栈的信息.

3.4 类

在这里插入图片描述
**类如上图包括:**已经加载当前类,已经加载类总数,已经卸载类总数

3.5 VM

在这里插入图片描述
VM 的话就不多解释,上面已很详细了,注意这里可以查看当前选择的垃圾收集器(有次面试被问到)
垃圾收集器:
名称 = ‘PS MarkSweep’, 收集 = 4, 总花费时间 = 0.413 秒
垃圾收集器:
名称 = ‘PS Scavenge’, 收集 = 11, 总花费时间 = 0.125 秒

3.6 Mbean

在这里插入图片描述
如上图所示,“MBeans”选项卡以通用方式显示有关在平台MBean服务器中注册的所有MBean的信息。MBeans选项卡允许您访问整套平台MXBean工具,包括在其他选项卡中不可见的工具。另外,您可以使用MBeans选项卡监视和管理应用程序的MBean。

左边的树显示当前正在运行的所有MBean。当您在树中选择一个MBean,它的MBeanInfo和MBean描述都显示在右侧,和任何属性,操作或通知出现在其下方的树。

参考:https://www.cnblogs.com/silyvin/p/10246865.html
https://www.cnblogs.com/grey-wolf/p/9217497.html
https://blog.csdn.net/dshf_1/article/details/103422963?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-4

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章