文章目录
二、命令列表
2.1 jvm相关命令
2.1.10 mbean(查看 Mbean 的信息)
使用场景
:
mbean
命令是arthas
提供的一个重要命令,它可以用来查看和操作 Java MBeans(管理 Beans)。MBeans 是 Java Management Extensions (JMX) 的一部分,允许你监控和管理 Java 应用程序的运行时行为。
参数说明:
参数名称 | 参数说明 |
---|---|
name-pattern | 名称表达式匹配 |
attribute-pattern | 属性名表达式匹配 |
[m] | 查看元信息 |
[i:] | 刷新属性值的时间间隔 (ms) |
[n:] | 刷新属性值的次数 |
[E] | 开启正则表达式匹配,默认为通配符匹配。仅对属性名有效 |
举例1:列出所有 Mbean 的名称:
基本用法
:
mbean
[arthas@11200]$ mbean
java.lang:type=MemoryPool,name=Metaspace
java.lang:type=MemoryPool,name=PS Old Gen
java.lang:type=GarbageCollector,name=PS Scavenge
java.lang:type=MemoryPool,name=PS Eden Space
JMImplementation:type=MBeanServerDelegate
java.lang:type=Runtime
java.lang:type=Threading
举例2:查看 Mbean 的元信息:
基本用法
:
mbean -m java.lang:type=Threading
[arthas@11200]$ mbean -m java.lang:type=Threading
NAME VALUE
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
MBeanInfo
Info:
ObjectName java.lang:type=Threading
ClassName sun.management.ThreadImpl
Description Information on the management interface of the MBean
Info Descriptor:
immutableInfo true
interfaceClassName com.sun.management.ThreadMXBean
mxbean true
MBeanAttributeInfo
Attribute:
Name ThreadAllocatedMemoryEnabled
Description ThreadAllocatedMemoryEnabled
Readable true
Writable true
Is true
Type boolean
Attribute Descriptor:
openType javax.management.openmbean.SimpleType(name=java.lang.Boolean)
originalType boolean
MBeanAttributeInfo
Attribute:
Name ThreadAllocatedMemorySupported
Description ThreadAllocatedMemorySupported
Readable true
Writable false
Is true
Type boolean
举例3:查看 mbean 属性信息:
基本用法
:
mbean java.lang:type=Threading
[arthas@11200]$ mbean java.lang:type=Threading
OBJECT_NAME java.lang:type=Threading
----------------------------------------------------------------------------------------------------------------
NAME VALUE
----------------------------------------------------------------------------------------------------------------
ThreadAllocatedMemoryEnabled true
ThreadAllocatedMemorySupported true
AllThreadIds [36, 30, 29, 27, 26, 25, 24, 23, 22, 20, 19, 18, 17, 16, 15, 14, 4, 3, 2]
ThreadContentionMonitoringEnabled false
CurrentThreadCpuTime 625145
CurrentThreadUserTime 0
ThreadCpuTimeSupported true
ThreadCpuTimeEnabled true
ThreadCount 19
TotalStartedThreadCount 28
ThreadContentionMonitoringSupported true
CurrentThreadCpuTimeSupported true
ObjectMonitorUsageSupported true
SynchronizerUsageSupported true
PeakThreadCount 19
DaemonThreadCount 15
ObjectName java.lang:type=Threading
[arthas@11200]$
举例4:mbean 的 name 支持通配符匹配:
基本用法
:
mbean java.lang:type=Th*
[arthas@11200]$ mbean java.lang:type=Th*
OBJECT_NAME java.lang:type=Threading
----------------------------------------------------------------------------------------------------------------
NAME VALUE
----------------------------------------------------------------------------------------------------------------
ThreadAllocatedMemoryEnabled true
ThreadAllocatedMemorySupported true
AllThreadIds [37, 30, 29, 27, 26, 25, 24, 23, 22, 20, 19, 18, 17, 16, 15, 14, 4, 3, 2]
ThreadContentionMonitoringEnabled false
CurrentThreadCpuTime 1092010
CurrentThreadUserTime 0
ThreadCpuTimeSupported true
ThreadCpuTimeEnabled true
ThreadCount 19
TotalStartedThreadCount 29
ThreadContentionMonitoringSupported true
CurrentThreadCpuTimeSupported true
ObjectMonitorUsageSupported true
SynchronizerUsageSupported true
PeakThreadCount 19
DaemonThreadCount 15
ObjectName java.lang:type=Threading
[arthas@11200]$
注意
ObjectName 的匹配规则与正常的通配符存在差异,详细参见:javax.management.ObjectName
举例5:通配符匹配特定的属性字段:
基本用法
:
mbean java.lang:type=Threading *Count
[arthas@11200]$ mbean java.lang:type=Threading *Count
OBJECT_NAME java.lang:type=Threading
---------------------------------------------------
NAME VALUE
---------------------------------------------------
ThreadCount 19
TotalStartedThreadCount 30
PeakThreadCount 19
DaemonThreadCount 15
[arthas@11200]$
举例6:使用-E
命令切换为正则匹配:
基本用法
:
mbean -E java.lang:type=Threading PeakThreadCount|ThreadCount|DaemonThreadCount
[arthas@11200]$ mbean -E java.lang:type=Threading PeakThreadCount|ThreadCount|DaemonThreadCount
OBJECT_NAME java.lang:type=Threading
---------------------------------------------
NAME VALUE
---------------------------------------------
ThreadCount 19
PeakThreadCount 19
DaemonThreadCount 15
[arthas@11200]$
举例7:使用-i
命令实时监控:
基本用法
:
mbean -i 1000 java.lang:type=Threading *Count
[arthas@11200]$ mbean -i 1000 java.lang:type=Threading *Count
OBJECT_NAME java.lang:type=Threading
---------------------------------------------------
NAME VALUE
---------------------------------------------------
ThreadCount 19
TotalStartedThreadCount 32
PeakThreadCount 19
DaemonThreadCount 15
OBJECT_NAME java.lang:type=Threading
---------------------------------------------------
NAME VALUE
---------------------------------------------------
ThreadCount 19
TotalStartedThreadCount 32
PeakThreadCount 19
DaemonThreadCount 15
OBJECT_NAME java.lang:type=Threading
---------------------------------------------------
NAME VALUE
---------------------------------------------------
ThreadCount 19
TotalStartedThreadCount 32
PeakThreadCount 19
DaemonThreadCount 15
OBJECT_NAME java.lang:type=Threading
本人其他相关文章链接
1.Arthas 全攻略:让调试变得简单
2.Arthas dashboard(当前系统的实时数据面板)
3.Arthas thread(查看当前JVM的线程堆栈信息)
4.Arthas jvm(查看当前JVM的信息)
5.Arthas sysprop(查看和修改JVM的系统属性)
6.Arthas sysenv(查看JVM的环境变量)
7.Arthas vmoption(查看和修改 JVM里诊断相关的option)
8.Arthas getstatic(查看类的静态属性 )
9.Arthas heapdump(dump java heap, 类似 jmap 命令的 heap dump 功能)
10.Arthas logger(查看 logger 信息,更新 logger level)
11.Arthas mbean(查看 Mbean 的信息)
12.Arthas memory(查看 JVM 内存信息)
13.Arthas ognl(执行ognl表达式)
14.Arthas perfcounter(查看当前 JVM 的 Perf Counter 信息)
15.Arthas vmtool(从 jvm 里查询对象,执行 forceGc)
16.Arthas jad(字节码文件反编译成源代码 )
17.Arthas mc(Memory Compiler/内存编译器 )
18.Arthas redefine(加载外部的.class文件,redefine到JVM里 )
19.Arthas classloader (查看 classloader 的继承树,urls,类加载信息)
20.Arthas sc(查看JVM已加载的类信息 )
21.Arthas sm(查看已加载类的方法信息 )
22.Arthas monitor(方法执行监控)
23.Arthas stack (输出当前方法被调用的调用路径)
24.Arthas trace (方法内部调用路径,并输出方法路径上的每个节点上耗时)
25.Arthas tt(方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测)
26.Arthas watch (方法执行数据观测)
27.Arthas profiler(使用async-profiler对应用采样,生成火焰图)