java虚拟机命令_Java虚拟机--常用Java命令(二)

1.关于Java命令之jstat

是用于监控虚拟机各种运行状态信息的命令工具,包括了堆Heap size和垃圾回收状况的监控。

jstat命令格式:

9dec347369ac133ad2fa0dd164d8a880.png

参数含义:

option:选项,我们一般使用-gc查看gc情况

vmid:VM的进程号,即当前运行的Java进程号

interval:间隔时间,单位为秒或毫秒

count:打印次数,如果缺省则打印无数次

注:interval和count代表查询间隔和打印次数,若省略这两个参数,则只查询一次。假设需要每200毫秒查询一次当前Java进程垃圾收集情况,一共查询5次,则:

f5da092482cfaf269f80603b41b2928b.png

option

代表着用户希望查询的虚拟机信息,主要分为3类:类装载、垃圾收集和运行期编译状况,具体选项和作用如下:

ea06ab4fe7e51713a2aa6fc5273b35bc.png

常见命令组合:

jstat -class  pid:显示加载class的数量及所占空间等信息。其中:loaded表示类装载的数量;bytes表示装载类的字节数;unloaded表示卸载类的数量;bytes表示卸载类的的字节数;time表示装载和卸载类所用的时间。

88971f1075991278ef9da30f8092df10.png

jstat -compiler  pid:显示VM实时编译的数量等信息。其中:compiled表示编译任务执行数量;failed表示编译任务失败的次数;invalid表示编译任务失效的数量;time表示编译任务消耗的时间;failedType表示最后一个编译失败任务的类型;failedMethod表示最后一个编译任务失败所在的类及方法。

4cf43f0160511dee2a4d7c76acba313f.png

jstat -gc  pid:显示gc信息,查看次数及时间。其中:s0c表示年轻代中第一个survivor(幸存区)的字节容量;s1c年轻代中第二个survivor的容量;s0u表示年轻代第一个survivor已使用空间;s1u表示年轻代第二个survivor已使用空间;ec表示Eden的容量;eu表示Eden的已使用空间;oc表示老年代的容量;ou表示老年代已使用的空间;mc表示Perm(持久代)的容量;mu持久代已使用空间;YGC表示从程序启动到采样时年轻代中gc次数;YGCT表示从程序启动到采样时年轻代gc所用时间;FGC从程序启动到采样时old代gc次数;FGCT表示时间;GCT程序启动到采样时gc的总时间。

d5b620a32d1f399e04d6368619fbdf54.png

jstat -gccapacity  pid:可以显示在VM内存中三代对象的使用和占用大小。其中NGCMN表示年轻代中初始化(最小)的大小;NGCMX表示年轻代初始化(最大)的大小;NGC表示年轻代中当前的容量;S0C、S1C和EC同上;OGCMN老年代初始化(最小)的大小;OGCMX老年代初始化(最大)的大小;OGC老年代当前新生成的容量;OC老年代的容量;其他同上。

64b3a027fa21f5adb814baf842b13b16.png

jstat -gcutil  pid:统计gc信息。s0年轻代第一个survivor已使用的占当前容量百分比;s1年轻代第二个survivor百分比;E表示Eden已使用的占当前容量百分比;O表示老年代的百分比;M表示持久代的百分比;其他同上。

3109eb0a7330480f1be9dd879421ee51.png

jstat -gcnew  pid:年轻代对象的信息。TT持有次数限制;MTT最大持有次数限制。

9f2b09c05c001245eeac3a861c60cf69.png

jstat -gcnewcapacity  pid:年轻代对象的信息及其占用量。

88280ab8724af97c894600abc3a59eae.png

jstat -gcold pid:old代对象的信息。

6495c1c9b63bfd57a82fcb2081055391.png

jstat -gcoldcapacity pid:old代对象的信息及其占用量。

79b5e6042835da12b32957b436e3f320.png

jstat -printcompilation pid:当前VM执行的信息。

b8e92f68869e5eeea49750d759a81cd6.png

2.关于Java命令之jinfo

此命令可以输出Java进程、core文件或远程debug服务器的配置信息,这些配置信息包括JAVA系统参数及命令行参数。

a7f5c65331010bbd1c592d12e6f09c01.png

让我们jinfo pid试一下:

0c399aacd38f22bd92e97f065ffd255d.png

3.关于Java命令之jhat

jhat的全名为Java Heap Analysis Tool,即是一个用来分析java堆情况的命令。如用jmap生成dump文件,然后用jhat来查看。

导出Dump文件:

先生成Dump文件:jmap -dump:format=b,file= pid

然后解析Java堆转储文件,并启动一个web server:jhat   会启动一个端口,访问localhost+端口号就可以了。

464a54dee8d39a7f44d731ad7a877190.png

分析

一般查看堆异常情况主要看这两个部分(在浏览器页面最下边):

2a767efb5c3e36ac2f116f664956af17.png

打开如图:

f14924b9b5ef37bf2c3010b375d4a9b7.png

6bc3cdd438a0ce7028664672b40f8054.png

具体排查时需要结合代码,观察是否大量应该被回收的对象在一直被引用或是否有占用内存特别大的对象无法被回收。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值