标签:max 进程 lvm 虚拟 生成 gcc 部分 host cond
? 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 [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的作用是实时查看和调整虚拟机各项参数
jinfo命令格式
jinfo [option] pid
在JDK1.6之后加入了在运行期间修改部分参数值的能力(使用-flag[+|-]name 或者 -flag name=value)
#查看初始化堆内存空间
[root@iZm5e90lblkm0fx24i4930Z home]# jinfo -flag InitialHeapSize 5011
-XX:InitialHeapSize=31457280
jmap(Memory Map for Java)命令用于生成堆转储快照(一般称为heapdump或dump文件)。
还有一种方式就是使用 -XX:+HeadDumpOnOutOfMemoryError参数,可以让虚拟机在内存溢出异常出现之后自动生成堆转储快照文件。
jamp还可以查询finalize执行队列、Java堆和方法区的详细信息,比如空间使用率、当前用的是那种收集器等
jmap命令格式:
jmap [option] vmid
选项 | 作用 |
---|---|
-dump | 生成Java堆转储快照.格式-dump:[live,],format=b,file= |
-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.
用来分析jmap生成的二进制转储快照,一般不会使用这个来分析
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
标签:max 进程 lvm 虚拟 生成 gcc 部分 host cond
原文地址:https://www.cnblogs.com/JackQiang/p/13289990.html