5.JVM-JDK工具

在JDK根目录下的bin目录中,JDK提供了很多用于监控虚拟机的工具。
这些工具中很多都是使用lib/tools.jar来包装进行实现的。

1. 命令行工具

名称全称主要作用
jpsJVM Process Status Tool显示指定系统内所有的HotSpot虚拟机进程
jstatJVM Statistics Monitoring Tool用于收集HotSpot虚拟机各方面的运行数据
jinfoJAVA Configuration Info显示虚拟机配置信息
jmapJAVA Memory Map生成虚拟机内存转储快照(heapdump文件)
jhatJAVA Heap Dump Browser用于分析heapdump文件,它会建立一个HTTP/HTML服务器,让用户在浏览器上查看分析结果
jstackJAVA Stack Trace显示虚拟机的线程快照

1.1. jps:虚拟机进程状况工具

jps [otpions] [hostid]
该工具用于查看主机上正在运行的java进程,类似于linux中的ps命令。
jps可以通过RMI协议查看远程虚拟机进程状态,hostid为RMI注册表中注册的主机名。

选项作用
-q只输出LVMID,省略主类名称
-m输出虚拟机进程启动时传递给main方法的参数
-l输出住类的全名,如果进程执行的是jar包,输出jar路径
-v输出虚拟机进程启动时JVM参数

1.2. jstat:虚拟机统计信息监视工具

jstat [option vmid [interval[s|ms] [count]] ]

interval count 分别代表查询间隔和次数,如果省略默认查询一次。

vmid:如果是本地虚拟机进程,那么vmid就是 vm进程id。如果是远程虚拟机进程,那么格式是:
[protocol:][//]lvmid[@hostname[:port]/servername]

选项作用
-class监视类装载、卸载数量、总空间以及类装载所耗费的时间
-gc监视java堆状况,包括Eden区,两个survivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息
-gccapacity监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间
-gcutil监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比
-gccause与-gcutil功能一样,但会额外输出导致上一次GC产生的原因
-gcnew监视新生代GC状况
-gcnewcapacity监视内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间
-gcold监视老年代GC状况
-gcoldcapacity监视内容与-gcold基本相同,输出主要关注使用到的最大、最小空间
-gcpermcapacity输出永久代使用到的最大最小空间
-compiler输出JIT编译器编译过的方法、耗时等信息。
-printcompilation输出已经被JIT编译的方法

垃圾回收统计结果选项说明:

结果说明
S0C第一个幸存区的大小
S1C第二个幸存区的大小
S0U第一个幸存区的使用大小
S1U第二个幸存区的使用大小
EC伊甸园区的大小
EU伊甸园区的使用大小
OC老年代大小
OU老年代使用大小
MC方法区大小
MU方法区使用大小
CCSC压缩类空间大小
CCSU压缩类空间使用大小
YGC年轻代垃圾回收次数
YGCT年轻代垃圾回收消耗时间
FGC老年代垃圾回收次数
FGCT老年代垃圾回收消耗时间
GCT垃圾回收消耗总时间

类加载统计结果选项说明:

结果说明
Loaded加载class的数量
Bytes所占用空间大小
Unloaded未加载数量
Bytes未加载占用空间
Time时间

编译统计结果选项说明:

结果说明
Compiled编译数量
Failed失败数量
Invalid不可用数量
Time时间
FailedType失败类型
FailedMethod失败的方法

堆内存统计结果选项说明:

结果说明
NGCMN编译数量
NGCMX失败数量
NGC不可用数量
S0C时间
S1C失败类型
EC失败的方法
OGCMN老年代最小容量
OGCMX老年代最大容量
OGC当前老年代大小
OC当前老年代大小
MCMN最小元数据容量
MCMX最大元数据容量
MC当前元数据空间大小
CCSMN最小压缩类空间大小
CCSMX最大压缩类空间大小
CCSC当前压缩类空间大小
YGC年轻代gc次数
FGC老年代GC次数

新生代垃圾回收统计结果选项说明:

结果说明
S0C第一个幸存区大小
S1C第二个幸存区的大小
S0U第一个幸存区的使用大小
S1U第二个幸存区的使用大小
TT对象在新生代存活的次数
MTT对象在新生代存活的最大次数
DSS期望的幸存区大小
EC伊甸园区的大小
EU伊甸园区的使用大小
YGC年轻代垃圾回收次数
YGCT年轻代垃圾回收消耗时间

老年代垃圾回收统计结果选项说明:

结果说明
MC方法区大小
MU方法区使用大小
CCSC压缩类空间大小
CCSU压缩类空间使用大小
OC老年代大小
OU老年代使用大小
YGC年轻代垃圾回收次数
FGC老年代垃圾回收次数
FGCT老年代垃圾回收消耗时间
GCT垃圾回收消耗总时间

老年代内存统计结果选项说明:

结果说明
OGCMN老年代最小容量
OGCMX老年代最大容量
OGC当前老年代大小
OC老年代大小
YGC年轻代垃圾回收次数
FGC老年代垃圾回收次数
FGCT老年代垃圾回收消耗时间
GCT垃圾回收消耗总时间

元数据空间统计结果选项说明:

结果说明
MCMN最小元数据容量
MCMX最大元数据容量
MC当前元数据空间大小
CCSMN最小压缩类空间大小
CCSMX最大压缩类空间大小
CCSC当前压缩类空间大小
YGC年轻代垃圾回收次数
FGC老年代垃圾回收次数
FGCT老年代垃圾回收消耗时间
GCT垃圾回收消耗总时间

总结垃圾回收统计结果选项说明:

结果说明
S0幸存1区当前使用比例
S1幸存2区当前使用比例
E伊甸园区使用比例
O老年代使用比例
M元数据区使用比例
CCS压缩使用比例
YGC年轻代垃圾回收次数
FGC老年代垃圾回收次数
FGCT老年代垃圾回收消耗时间
GCT垃圾回收消耗总时间

JVM编译方法统计结果选项说明:

结果说明
Compiled最近编译方法的数量
Size最近编译方法的字节码数量
Type最近编译方法的编译类型
Method方法名标识

1.3. jinfo JAVA配置信息工具

jinfo [option] pid
它可以实时查看和调整虚拟机各种参数

1.4. jmap JAVA内存映像工具

jmap [option] vmid
该命令用于生成堆转储快照。

选项作用
-dump生成java堆转储快照,格式为-dump:[live, ]fromat=b,file=
-finalizerinfo显示在F-Queue中等待Finalizer线程执行finalize方法的对象, 仅Linux/Solaris平台有效
-heap显示java堆详细信息,如使用那种回收器,参数配置,分代状况等,仅Linux/Solaris平台有效
-histo显示堆中对象统计信息,包括类、实例数量、合计容量
-permstat以ClassLoader为统计口径显示永久代内存状态,仅Linux/Solaris平台有效
-F当虚拟机进程对-dump选项没有响应时,可使用这个选项强制生成dump快照,仅Linux/Solaris平台有效

jmap -dump:format=b,firle=eclipse.bin 3500

1.5. jhat 虚拟机堆转储快照分析工具

不建议使用,因为效率和资源占用问题,特别不推荐在生产环境使用。

jhat <dumpFile>

该命令会启动一个web服务,需要通过浏览器访问。

1.6. jstack java堆栈跟踪工具

jstack [option] vmid
该命令用于生成虚拟机当前时刻的线程快照。

选项作用
-F当正常输出的请求不被响应时,强制输出线程堆栈
-l除堆栈外,显示关于锁的附加信息
-m如果调用本地方法的话,可以显示C/C++的堆栈

2. JDK可视化工具

2.1. JConsole Java监视与管理控制台

JConsole是一种基于JMX的可视化监视、管理工具。

2.2. VisualVM 多合一故障处理工具

打开界面 干就完了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值