码迷,mamicode.com
首页 > 其他好文 > 详细

JVM-性能监控基础命令

时间:2020-07-12 22:25:57      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:max   进程   lvm   虚拟   生成   gcc   部分   host   cond   

JVM-JDK自带性能监控基础命令

jps(虚拟机集进程状况)

? JPS类似于LIUNX中的ps命令,主要是用来查看正在运行的虚拟机进程,并显示虚拟机执行主类(Main())、虚拟机的进程id

jps [options] [hostid]

选项 作用
-q 查询虚拟机id(lvmid)
-m 查询虚拟机进程启动时的主类
-l 输出主类全名,如果进程执行的时jar包,则输出jar路径
-v 输出虚拟机进程启动时参数
[root@iZm5e90lblkm0fx24i4930Z home]# ps -ef | grep java
root      5011  4890  2 10:30 pts/3    00:00:22 java -jar springboot-learn-0.0.1-SNAPSHOT.jar
root      5124  4890  0 10:44 pts/3    00:00:00 grep --color=auto java
[root@iZm5e90lblkm0fx24i4930Z home]# jps -q
5011
5125
[root@iZm5e90lblkm0fx24i4930Z home]# jps -l
5011 springboot-learn-0.0.1-SNAPSHOT.jar
5135 sun.tools.jps.Jps
[root@iZm5e90lblkm0fx24i4930Z home]# jps -m
5011 jar
5145 Jps -m
[root@iZm5e90lblkm0fx24i4930Z home]# jps -v
5155 Jps -Dapplication.home=/usr/local/jdk/jdk1.8.0_202 -Xms8m
5011 jar

jstat(虚拟机统计信息监视)

jstat是用于监视虚拟机各种运行状态信息的命令行工具,可以显示本地或者远程虚拟机进程中的类加载、内存、垃圾手机、即时编译等运行时数据。

jstat命令格式:

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

interval:查询的时间

count:查询次数

#每250ms查询一次,查询两次
[root@iZm5e90lblkm0fx24i4930Z home]# jstat -gc 5011 250 2
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
1792.0 1792.0  0.0   1377.3 14592.0  12583.9   36212.0    26671.7   70872.0 67564.8 9984.0 9302.2    157    0.692   3      0.221    0.913
1792.0 1792.0  0.0   1377.3 14592.0  12583.9   36212.0    26671.7   70872.0 67564.8 9984.0 9302.2    157    0.692   3      0.221    0.913

如果是远程vmid的格式

[protpocol:][//]lvmid[@hostname[:port]/servername]

选项 作用
-class 监视类加载、卸载数量、总空间、类装载所耗费时间
-gc 监视Java堆,包括Eden区、2个Survivor区、老年代、永久代等容量、已用空间、垃圾手机时间合计等信息
-gccapacity 和-gc基本相同,主要关注Java堆各个区域使用到的最大、最小空间
-gcutil 和-gc基本相同,输出的是使用空间占总空间的百分比
-gccause 和-gcutil基本相同,但是会额外输出导致上一次垃圾收集产生的原因
-gcnew 监视新生代垃圾收集情况
-gcnewcapacity 和-gcnew基本相同,主要关注Java堆各个区域使用到的最大、最小空间
-gcold 监视老年代垃圾收集情况
-gcoldcapacity 和-gcoldnew基本相同,主要关注Java堆各个区域使用到的最大、最小空间
-gcpermcapacity 输出永久代使用到的最大、最小空间
-compiler 输出及时编译器编译过的方法、耗时等信息
-printcompilation 输出已经被及时编译的方法
[root@iZm5e90lblkm0fx24i4930Z home]# jstat -class 5011
Loaded  Bytes  Unloaded  Bytes     Time   
 13303 24614.0        0     0.0      16.66
[root@iZm5e90lblkm0fx24i4930Z home]# jstat -gc 5011 250 2
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
1792.0 1792.0  0.0   1377.3 14592.0  12885.0   36212.0    26671.7   70872.0 67564.8 9984.0 9302.2    157    0.692   3      0.221    0.913
1792.0 1792.0  0.0   1377.3 14592.0  12885.0   36212.0    26671.7   70872.0 67564.8 9984.0 9302.2    157    0.692   3      0.221    0.913
[root@iZm5e90lblkm0fx24i4930Z home]# jstat -gcutil 5011
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   
  0.00  76.86  89.82  73.65  95.33  93.17    157    0.692     3    0.221    0.913
S0:幸存1区当前使用比例
S1:幸存2区当前使用比例
E:伊甸园区使用比例
O:老年代使用比例
M:元数据区使用比例
CCS:压缩使用比例
YGC:年轻代垃圾回收次数
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间

jinfo(Java配置信息)

jinfo的作用是实时查看和调整虚拟机各项参数

jinfo命令格式

jinfo [option] pid

在JDK1.6之后加入了在运行期间修改部分参数值的能力(使用-flag[+|-]name 或者 -flag name=value)

#查看初始化堆内存空间
[root@iZm5e90lblkm0fx24i4930Z home]# jinfo -flag InitialHeapSize 5011
-XX:InitialHeapSize=31457280

jmap(内存映射)

jmap(Memory Map for Java)命令用于生成堆转储快照(一般称为heapdump或dump文件)。

还有一种方式就是使用 -XX:+HeadDumpOnOutOfMemoryError参数,可以让虚拟机在内存溢出异常出现之后自动生成堆转储快照文件。

jamp还可以查询finalize执行队列、Java堆和方法区的详细信息,比如空间使用率、当前用的是那种收集器等

jmap命令格式:

jmap [option] vmid

选项 作用
-dump 生成Java堆转储快照.格式-dump:[live,],format=b,file=,其中live子参数说明是否只dump出存货的对象
-finalizerinfo 显示F-Queue中等待Finalizer线程执行finalize方法的对象,只在linux/Solaris平台下有效
-heap 显示Java堆详细信息,比如使用那种回收器,参数配置,分代状况,只在linux/Solaris平台下有效
-histo 显示队中对象统计信息,包括类、实例数量、合计容量
-permstat 已Classloader为统计口径显示永久代内存状态。只在linux/Solaris平台下有效
-F 当前虚拟机进程堆-dump选项没有响应时,可以使用这个选项强制生成dump快照。只在linux/Solaris平台下有效
#dump
[root@iZm5e90lblkm0fx24i4930Z ~]# jmap -dump:live,format=b,file=/home/1.txt 5011
Dumping heap to /home/1.txt ...
Heap dump file created

#-finalizerinfo
[root@iZm5e90lblkm0fx24i4930Z ~]# jmap -finalizerinfo 5011
Attaching to process ID 5011, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.202-b08
Number of objects pending for finalization: 0(等待回收的数量)

#-heap
[root@iZm5e90lblkm0fx24i4930Z ~]# jmap -heap 5011
Attaching to process ID 5011, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.202-b08

using threafad-local object allocation. #Serial Old 收集器
Mark Sweep Compact GC   #标记-清除

Heap Configuration:   ##堆配置信息
   MinHeapFreeRatio         = 40 ##最小堆使用比例
   MaxHeapFreeRatio         = 70 ##最大堆使用比例
   MaxHeapSize              = 482344960 (460.0MB)
   NewSize                  = 10485760 (10.0MB)
   MaxNewSize               = 160759808 (153.3125MB)
   OldSize                  = 20971520 (20.0MB)
   NewRatio                 = 2
   SurvivorRatio            = 8
   MetaspaceSize            = 21807104 (20.796875MB)
   CompressedClassSpaceSize = 1073741824 (1024.0MB)
   MaxMetaspaceSize         = 17592186044415 MB
   G1HeapRegionSize         = 0 (0.0MB)

Heap Usage:
New Generation (Eden + 1 Survivor Space):
   capacity = 16777216 (16.0MB)
   used     = 863584 (0.823577880859375MB)
   free     = 15913632 (15.176422119140625MB)
   5.147361755371094% used
Eden Space:
   capacity = 14942208 (14.25MB)
   used     = 863584 (0.823577880859375MB)
   free     = 14078624 (13.426422119140625MB)
   5.779493900767544% used
From Space:
   capacity = 1835008 (1.75MB)
   used     = 0 (0.0MB)
   free     = 1835008 (1.75MB)
   0.0% used
To Space:
   capacity = 1835008 (1.75MB)
   used     = 0 (0.0MB)
   free     = 1835008 (1.75MB)
   0.0% used
tenured generation:
   capacity = 37081088 (35.36328125MB)
   used     = 22076744 (21.05402374267578MB)
   free     = 15004344 (14.309257507324219MB)
   59.53639763752347% used

22491 interned Strings occupying 2456808 bytes.

jhat

用来分析jmap生成的二进制转储快照,一般不会使用这个来分析

jstack

jstack命令用于生成虚拟机当前时刻的线程快照。线程快照:当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的目的通常是定位线程出现长时间停顿的原因。

jstack命令格式:

jstack [ option ] vmid

选项 作用
-F 当正常输出的请求不被响应时,强制输出线程堆栈
-l 除堆栈外,显示关于锁的附加信息
-m 如果调用到本地方法的话,可以显示C/C++的堆栈
[root@iZm5e90lblkm0fx24i4930Z home]# jstack -l 5011
2020-07-12 16:31:17
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.202-b08 mixed mode):

"Attach Listener" #39 daemon prio=9 os_prio=0 tid=0x00007fe268003000 nid=0x14d9 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"logback-8" #38 daemon prio=5 os_prio=0 tid=0x00007fe278003000 nid=0x13fb waiting on condition [0x00007fe25ca2b000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000000ecfd9c78> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

   Locked ownable synchronizers:
	- None

JVM-性能监控基础命令

标签:max   进程   lvm   虚拟   生成   gcc   部分   host   cond   

原文地址:https://www.cnblogs.com/JackQiang/p/13289990.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!