jps:输出Java进程
jps
prik@MacBook-Pro blog % jps
52939 Launcher
52684 Bootstrap
57757 Jps
48783 Launcher
jps -v
输出 jvm 启动参数
prik@MacBook-Pro blog % jps -v
79558 -Xms2048m -Xmx4096m -XX:ReservedCodeCacheSize=240m -XX:+UseCompressedOops -Dfile.encoding=UTF-8 -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -XX:CICompilerCount=2 -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -Djdk.http.auth.tunneling.disabledSchemes="" -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Xverify:none -Didea.paths.selector=IntelliJIdea2020.1 -Didea.executable=idea -Didea.home.path=/Applications/IntelliJ IDEA.app/Contents -Didea.vendor.name=JetBrains
57804 Jps -Dapplication.home=/Library/Java/JavaVirtualMachines/jdk1.8.0_241.jdk/Contents/Home -Xms8m
jps -l
输出主类名或 jar 包
prik@MacBook-Pro blog % jps -l
52939 org.jetbrains.jps.cmdline.Launcher
52684 org.apache.catalina.startup.Bootstrap
57871 sun.tools.jps.Jps
48783 org.jetbrains.jps.cmdline.Launcher
jps -l
输出主类名或 jar 包
prik@MacBook-Pro blog % jps -l
52939 org.jetbrains.jps.cmdline.Launcher
52684 org.apache.catalina.startup.Bootstrap
57871 sun.tools.jps.Jps
48783 org.jetbrains.jps.cmdline.Launcher
jstat:查看虚拟机运行状态
jstat -class [pid]
类加载/卸载的总数量/总空间、类加载耗费时间
prik@MacBook-Pro blog % jstat -class 52684
Loaded Bytes Unloaded Bytes Time
22176 50351.6 7 6.0 38.70
jstat -gc [pid]
堆内存各区域用量,垃圾收集时间
pirk@MacBook-Pro blog % jstat -gc 52684
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
176128.0 36864.0 0.0 36497.5 2127872.0 954779.6 1054208.0 262758.6 180376.0 173432.4 17584.0 16469.6 31 1.072 5 0.865 1.937
jstat -gcutil [pid]
与-gc差不多,主要关注已使用空间的百分比
prik@MacBook-Pro blog % jstat -gcutil 52684
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 99.01 44.96 24.92 96.15 93.66 31 1.072 5 0.865 1.937
jinfo:java配置信息
jinfo [pid]
虚拟机各项参数
prik@MacBook-Pro blog % jinfo 20743
Attaching to process ID 20743, please wait...
Debugger attached successfully.
Client compiler detected.
JVM version is 25.151-b12
Java System Properties:
java.runtime.name = Java(TM) SE Runtime Environment
java.vm.version = 25.151-b12
sun.boot.library.path = /usr/local/src/jdk1.8.0_151/jre/lib/i386
java.vendor.url = http://java.oracle.com/
java.vm.vendor = Oracle Corporation
path.separator = :
file.encoding.pkg = sun.io
...
jinfo -flags [pid]
jps -v只能查看显式指定的参数列表,该指令可查看未被显式指定的
prik@MacBook-Pro blog % jinfo -flags 20743
Attaching to process ID 20743, please wait...
Debugger attached successfully.
Client compiler detected.
JVM version is 25.151-b12
Non-default VM flags: -XX:InitialHeapSize=16777216 -XX:MaxHeapSize=268435456 -XX:MaxNewSize=89456640 -XX:MinHeapDeltaBytes=131072 -XX:NewSize=5570560 -XX:OldSize=11206656
jmap:内存快照工具
jmap -heap [pid]
Java堆详细信息
哪种GC,什么参数配置,分代状况等
prik@MacBook-Pro blog % jmap -heap 20743
Attaching to process ID 20743, please wait...
Debugger attached successfully.
Client compiler detected.
JVM version is 25.151-b12
using thread-local object allocation.
Mark Sweep Compact GC
Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 268435456 (256.0MB)
NewSize = 5570560 (5.3125MB)
MaxNewSize = 89456640 (85.3125MB)
OldSize = 11206656 (10.6875MB)
NewRatio = 2
SurvivorRatio = 8
MetaspaceSize = 12582912 (12.0MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 4294963200 (4095.99609375MB)
G1HeapRegionSize = 0 (0.0MB)
Heap Usage:
New Generation (Eden + 1 Survivor Space):
capacity = 5046272 (4.8125MB)
used = 783568 (0.7472686767578125MB)
free = 4262704 (4.0652313232421875MB)
15.527660815746753% used
Eden Space:
capacity = 4521984 (4.3125MB)
used = 773144 (0.7373275756835938MB)
free = 3748840 (3.5751724243164062MB)
17.097451030344203% used
From Space:
capacity = 524288 (0.5MB)
used = 10424 (0.00994110107421875MB)
free = 513864 (0.49005889892578125MB)
1.98822021484375% used
To Space:
capacity = 524288 (0.5MB)
used = 0 (0.0MB)
free = 524288 (0.5MB)
0.0% used
tenured generation:
capacity = 11206656 (10.6875MB)
used = 4863752 (4.638435363769531MB)
free = 6342904 (6.049064636230469MB)
43.40056480720029% used
6858 interned Strings occupying 480096 bytes.
jmap -dump:format=b,file=xxx.bin [pid]
生成dump文件(当前整个内存的快照),可以用专门的工具来分析查看
或使用 jdk 自带的 jhat 查看:jhat xxx.bin
内置了一个 web 服务,可以直接在浏览器中查看
jstack:线程分析工具
可以使用 jstack
指令查看线程状况
-f
:强制执行 thread dump,可以在 java 进程卡死时使用。需要系统权限
-m
:混合模式,输出 java 帧和 native 帧,需要系统权限
-l
:常列表模式,输出相关的 locks