jconsole

首先要说的是:性能组真的太强大。在性能组的第二天,就接触到一个工具。回家找各方资料熟悉学习,总结如下,希望对大家有帮助。

Jconsole是一个JMX兼容的监视工具,一个基于JMX的GUI工具,能够监控运行在java平台的应用程序的性能和资源耗费情况,能够提供相对全面的系统监控功能。它可以监控本地应用程序和远程应用程序。其中:JVM要设置为可管理的模式启动,通过Jconsole命令启动Jconsole,一个用于连接的对话框将会打开,如图:

其中:本地进程—-列出了所有本地正在运行的JVM进程,以及进程对应的ID 信息;远程进程—-添加的URL通过RMI连接器连接到一个JMX代理。

  1. 监控 内存

如下图:

Jconsole上的信息展现:

概述:监控JVM和一些监控变量的信息;

内存:内存使用信息

线程:线程使用信息

类:类调用信息

VM摘要:JVM的信息

Mbean:所有Mbean的信息

2. 关于 Mbean:获取所有平台的信息,包括那些不能从其他项中获取的信息。特别注意:前面几项的信息也会在Mbean这里显示。内存的Mbean包括四个属性:

(1) HeapMemoryUsage:用于描述当前堆内存使用情况的只读属性;

(2) NonHeapMemoryUsage:用于描述当前的非堆栈内存的使用情况的只读属性;

(3) ObjectPendingFinalizationCount:用于描述有多少对象被挂起以便回收;

(4) Verbose:用于动态设置GC是否跟着详细的堆栈信息。为一个布尔变量。

如下图,

Jconsole通过读取内存系统、内存池、垃圾回收的信息来获取对内存消耗、内存池、垃圾回收的统计情况,如图:

例子:

在Mbean可以设置内存池中Tenured Gen的UsageThreshold值。正常情况下,内存标签中显示的柱状图为绿色,当超过设定的UsageThreshold值,柱状图为红色。如下图:

2. 死锁检查

(1)线程标签提供关于应用的线程运行信息。如下图:

左下角红色框内,为正在运行的线程列表,在检索区呢输入单个字符可以快速查找包括字符的线程,获取这个线程的相关信息。

(2)在Mbean标签中,提供了一些关于Thread标签的详细信息。如下图中,

Threading对应的操作中:findMonitorDeadlockedThreads:显示如果发生死锁或者应用挂起,返回一组死锁线程的ID。具体操作:点击,会弹出一个返回框

另一个重要的操作:getThreadCpuTime可以返回指定线程消耗的CPU时间。该目录下的其他操作项,也是对线程信息的显示,可以结合实际需要查询。

3. 日志管理

Mbean中提供了对log的操作。getLoggerLevel和setLoggerLevel可以管理log的等级。

先总结这么多,Jconsole功能很强大,希望这个小结对大家有帮助,继续挖掘Jconsole更多其他功能。

VN:F [1.9.7_1111]
### ### JConsole 使用指南:JVM 监控与性能调优 JConsole 是 JDK 自带的一款可视化 JVM 监控工具,支持对 Java 应用的内存、线程、类加载、GC 等运行时指标进行实时监控,适用于本地和远程 JVM 分析。其基于 JMX 协议实现,能够自动搜索本机运行的 Java 进程,并通过图形界面展示关键性能数据,是轻量级、高效的监控解决方案[^4]。 #### ### 内存监控 在 JConsole 的“内存”标签页中,可以查看 JVM 堆内存和非堆内存(如元空间、直接内存)的使用情况。堆内存监控有助于识别内存泄漏或 GC 频繁触发的问题,而非堆内存则可用于分析类加载或 DirectBuffer 使用异常。通过观察内存使用曲线,可以判断是否存在内存持续增长、GC 回收效率低下等情况。若内存使用持续上升且无法回收,可能表明存在内存泄漏[^1]。 #### ### 线程监控 JConsole 提供了详细的线程监控功能,包括线程总数、活跃线程数、线程状态等。在“线程”标签页中,可以查看当前线程的堆栈信息,识别死锁、阻塞或线程池资源耗尽等问题。例如,在模拟死锁的测试代码中,多个线程因互相等待锁资源而无法继续执行,JConsole 能够检测到这些线程并提示死锁状态,有助于快速定位并发问题[^5]。 #### ### 类加载监控 在“类”标签页中,JConsole 展示了已加载类的总数、已卸载类数等信息。类加载监控对于识别元空间溢出问题(如 `OutOfMemoryError: Metaspace`)具有重要意义。若类加载数量持续增长而未被卸载,可能意味着存在类加载器泄漏或动态代理类未被回收的问题[^1]。 #### ### VM 摘要与 MBean 管理 “VM 摘要”页面提供了 JVM 的基本信息,如版本、启动参数、系统属性等,有助于快速了解运行环境。MBean 标签页则展示了所有注册的 MBean 信息,支持对 JVM 或应用自定义 MBean 的属性和操作进行管理,适用于高级监控和诊断场景[^1]。 #### ### 启动与连接配置 启动 JConsole 可通过执行 `jconsole.exe`(Windows)或 `jconsole`(Linux/macOS)命令实现,程序会自动列出本地运行的 Java 进程供选择连接。对于远程应用,需在 JVM 启动参数中添加如下配置以启用 JMX 远程监控: ```bash -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false ``` 该配置允许 JConsole 通过指定端口连接远程 JVM,进行实时监控[^2]。 #### ### 性能调优与问题诊断 JConsole 可用于辅助性能调优,例如通过内存和线程监控识别内存泄漏、频繁 Full GC、线程阻塞等问题。结合线程快照(Thread Dump)和堆内存快照(Heap Dump),可进一步分析具体问题根源。在实际调优过程中,建议配合日志分析和代码审查,综合判断问题成因[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值