jvm-命令

1. jps

输出所有的java进程

-l :输出主类全名。

-v:输出虚拟机进程启动的jvm参数。

-m:输出启动时传递给main函数的参数。

-q:只输出LVMID,省略主类的名称。

2. 根据提示查看命令含义---jinfo为例

jinfo 带尖括号的是必须要传递的参数,带中括号的是可选的参数。 

jinfo [option] <pid>

option是可选参数,表示可以选择哪些操作。可以选择的option参数在下面有介绍。比如 -flag <name> 和 -flags等

3. jinfo

显示JVM配置信息

C:>jinfo 11188  #将所有的JVM配置信息一股脑的都打印出来

C:>jinfo -flags 11188  #打印所有JVM的参数值

下面在只做解释说明,不再写对应命令

-flag [+|-]< name >:设置或取消指定java虚拟机参数的布尔值

-flag < name >=< value >:设置指定java虚拟机的参数的值

4. jstack

 打印线程栈信息。

5. jstat(重点)

获得JVM堆栈信息

C:>jstat -options ## 查看jstat支持哪些操作选项
-class ##类加载数量
-compiler ##编译数量
-gc ##gc信息(重点)
-gccapacity ##堆内存统计
-gccause ##gc的原因
-gcmetacapacity ##元数据空间统计
-gcnew ##新生代垃圾回收统计
-gcnewcapacity ##新生代内存统计
-gcold ##老年代垃圾回收统计
-gcoldcapacity ##老年代内存统计
-gcutil ##总垃圾回收统计
-printcompilation ##JVM编译方法统计

重点关注-gc命令即可,其他命令都是对这个命令的细化。

C:>jstat -gc 1584 2000 5  ## 每隔2000ms打印一次1584进程的堆栈信息,一共打印5次。
S0C       S1C       S0U       S1U  EC       EU      OC         OU      MC      MU         CCSC    CCSU    YGC    YGCT   FGC    FGCT  GCT
218112.0    229888.0    34559.1    0.0    550400.0    109873.8    2303488.0    1711771.6    105088.0    101679.9    11904.0    11157.2    80    6.640    9    21.079  27.719
218112.0    229888.0    34559.1    0.0    550400.0    109887.4    2303488.0    1711771.6    105088.0    101679.9    11904.0    11157.2    80    6.640    9    21.079  27.719
218112.0    229888.0    34559.1    0.0    550400.0    118789.0    2303488.0    1711771.6    105088.0    101679.9    11904.0    11157.2    80    6.640    9    21.079  27.719
218112.0    229888.0    34559.1    0.0    550400.0    118798.2    2303488.0    1711771.6    105088.0    101679.9    11904.0    11157.2    80    6.640    9    21.079  27.719
218112.0    229888.0    34559.1    0.0    550400.0    119354.1    2303488.0    1711771.6    105088.0    101679.9    11904.0    11157.2    80    6.640    9    21.079  27.719
218112.0    229888.0    34559.1    0.0    550400.0    119428.0    2303488.0    1711771.6    105088.0    101679.9    11904.0    11157.2    80    6.640    9    21.079  27.719

S0C:年轻代第一个幸存区(from)容量,单位KB。
S1C:年轻代第二个幸存区(to)的容量,单位KB。
SOU:年轻代第一个幸存区(from)目前已经使用的容量,单位KB。
S1U:年轻代第二个幸存区(to)目前已经使用的容量,单位KB。
EC:年轻代Eden容量,单位KB。
EU:年轻代Eden已使用容量,单位KB。
OC:老年代Old容量,单位KB。
OU:老年代Old已使用容量,单位KB。
MC:方法区容量,单位KB。
MU:方法区已使用容量,单位KB。
CCSC:压缩类空间容量,单位KB。
CCSU:压缩类空间使用容量,单位KB。
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗的总时间

对于上面这些分区不了解的,可以看另一篇文章,jvm-堆内存

6. jmap

生成JVM内存快照信息

总结:

以上就是jvm常用的命令。很直接,只要安装了jdk,这些工具命令就都能使用。但是有时候我们要分析一些比较复杂的问题的时候,这些命令就显得不是那么的直观,有没有一个工具,能通过图形化的界面展示出来这些内容呢?不仅有,而且还是JDK自带的。

就在JAVA_HOME/bin目录下,有2个工具,一个jconsole,还有一个jvisualvm,他们都是。

原文地址:https://www.cnblogs.com/CUI-S/p/11729068.html