Java常用命令——jps/jstat/jinfo/jmap/jstack

1,349 阅读3分钟

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