1 JConsole
一、介绍
JConsole 是一种 Java 监控和管理控制台工具,可以用于监视 Java 虚拟机(JVM)的性能和资源利用情况。它提供了一种图形化界面,可以实时查看 JVM 的运行状态、内存使用情况、线程活动、垃圾回收等信息,以及执行一些管理操作。
使用 JConsole 可以帮助开发人员和系统管理员进行性能调优、内存泄漏排查和故障诊断,从而提高应用程序的可靠性和性能。
二、启动 JConsole
在 windows 下我们可以直接找到 JDK 的所在目录,去 /bin
目录下找到 jconsole.exe
双击运行即可
连接到 Java 进程
在本地进程中会展示出当前计算机所有正在运行的 Java 程序,只需选中双击进入,再点击 不安全的连接
即可进入到监听界面
三、监控 JVM 资源
连接成功之后,JConsole 将会显示应用程序的概览信息,在概览标签页可以查看程序的垃圾回收、类加载、线程等信息。
3.1 内存:
显示 JVM 的内存使用情况,包括堆内存、非堆内存、内存池等。
内存
界面具有 执行GC
按钮,可以随时单击该按钮以执行垃圾回收。同时还能通过点击 图表-下拉选项
或者单击 右下角内存图
切换所要监控的内存区。Java VM
管理两种内存:堆内存和非堆内存,这两种内存都是在 Java VM
启动时创建的。
3.2 线程:
显示 JVM 中的线程活动情况,包括线程数、线程状态、死锁等。
红色:峰值线程数
蓝色:活动线程数左下角的线程列表列出了所有活动线程,选中 线程
单击,会显示有关该线程的信息,包括线程名称,状态和堆栈跟踪。点击 检测死锁
可以检测出死锁
3.3类:
显示 JVM 加载的类信息,包括已加载类的数量、被卸载的类数量等。
红色:加载的类的总数(包括随后卸载的类)
蓝色:当前加载的类的数量详细信息
部分显示自 Java VM
启动以来加载的类的总数,当前加载的数量和卸载的数量。可以通过选择 时间范围-下拉框
来查询指定时间范围的类加载情况。
3.4 VM 概要:
显示JVM的基本信息,如 JVM 的启动参数、命令行参数等。
3.5 MBean:
显示了所有在 platform. MBeanserver 上注册的 MBeans 的信息。
左边的树形结构显示了所有的 MBean,选择了一个 MBean 之后,其属性、操作、通知和其他信息会在右边显示。
2 VisualVM
1.介绍
VisualVM 是一个工具,它提供了一个可视界面,用于查看 Java 虚拟机 (Java Virtual Machine, JVM) 上运行的基于 Java 技术的应用程序(Java 应用程序)的详细信息。**您可以查看本地应用程序以及远程主机上运行的应用程序的相关数据。此外,还可以捕获有关 JVM 软件实例的数据,并将该数据保存到本地系统,以供后期查看或与其他用户共享。
Visual VM比较强大的JVM图形化监控工具,比jconsole强大完善。
VisualVM: Home
VisualVM: Home
https://visualvm.github.io/
2.使用
2.1 直接双击即可
2.2选择你的应用
2.3 概述界面
PID – 程序启动后的进程号,在命令行中可以用 jps命令查看
主机 – 如果是本机的话显示,localhost,如果是远程主机应该是显示远程主机的主机名或者IP
主类 – 程序入口类(main方法所在的类)
参数 – VisualVm 启动的时候使用的一些配置文件路径
JVM – jvm类型
Java – jdk的版本信息
Java Home – JDK安装目录
JVM参数 – VisualVm 启动时候设置的JVM参数
2.4监控界面 系统资源占用情况
CPU – 展示java程序运行的时候占用的cpu资源 如下图中橙色的表示程序运行使用的cpu资源百分比,蓝色部分表示垃圾回收占用CPU资源百分比
堆 – 这里要说明下堆内存的组成部分,堆是由老年代和新生代组成,其中新生代有由"伊甸园"和"两个幸存区组成"三部分组成,堆视图看到的资源占用实际是"老年代"、“伊甸园(Eden)”、"两个幸存者(Survivor )"的一个综合情况。
PermGen – Perm 区用来存放java类以及其他虚拟机自己的静态数据,(常被称为持久代或者方法区)
类 – 此视图 主要展示 当前程序加载了多少个类
线程 – 当前程序的线程启动情况
执行垃圾回收 – 手动触发一次GC 相当于在程序代码中调用(System.gc()),如果是远程连接到生产环境中请慎重点击。
堆Dump – 生产当前程序的内存快照hprof文件,对于分析内存溢出问题比较有帮助。(可以查看当前程序内存中的所有对象)
2.5线程页面 程序中所有的线程运行状态
线程dump – 此按钮主要生产当前程序中所有线程的快照(对分析线程死锁,比较有帮助)
时间线 – 展示每个线程的实时运行状态(不同颜色代表不同的状态)
表 – 按照二维表格的形式展示每个线程不同状态的时间统计信息
2.6抽取样
CPU-> CPU样例 – 主要展示方法消耗的CPU资源比例和时间
CPU->线程CPU时间 – 主要展示线程消耗的CPU资源信息
内存-> 堆柱状图 – 展示堆内存中各种对象占用的字节数和总实例数
内存-> 每个线程分配—展示不同线程占用内存的情况
2.7 VisualGC插件界面
插件中心地址:https://visualvm.github.io/pluginscenters.html
VisualVM: Plugins Centers