Java监控调优工具
监控类工具 jps 查看运行中的 JVM 进程信息
1 2 3 [root@localhost software] 1548 sun.tools.jps.Jps -lvm -Dapplication.home=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el7_9.x86_64 -Xms8m 1501 monitor_tuning-0.0.1-SNAPSHOT.jar
参数
作用
-q
只显示进程号
-l
显示应用 main class 的完整包名或应用的 JAR 文件的完整路径名
-m
显示传递给 main 方法的参数
-v
显示传递给 JVM 的参数
-V
禁止输出类名,JAR 文件名和传递给 main 方法的参数,仅显示本地 JVM 标识符的列表
hostid
想要查看的主机的标识符,例:jps -l rmi://remote.comain:1231
jstat 监控 JVM 统计信息,查看内存使用情况
1 2 3 4 5 6 7 8 9 [root@localhost software] S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT 4608.0 4608.0 0.0 0.0 131072.0 120180.4 19968.0 7128.5 21296.0 20357.1 2688.0 2439.5 8 0.105 1 0.045 0.150 4608.0 4608.0 0.0 0.0 131072.0 120180.4 19968.0 7128.5 21296.0 20357.1 2688.0 2439.5 8 0.105 1 0.045 0.150 4608.0 4608.0 0.0 0.0 131072.0 120180.4 19968.0 7128.5 21296.0 20357.1 2688.0 2439.5 8 0.105 1 0.045 0.150 4608.0 4608.0 0.0 0.0 131072.0 120180.4 19968.0 7128.5 21296.0 20357.1 2688.0 2439.5 8 0.105 1 0.045 0.150 4608.0 4608.0 0.0 0.0 131072.0 120180.4 19968.0 7128.5 21296.0 20357.1 2688.0 2439.5 8 0.105 1 0.045 0.150
参数
作用
-class
显示有关类加载器行为的统计信息
-compiler
显示有关 Java HotSpot VM Just-in-Time 编译器行为的统计信息
-gc
显示有关垃圾收集堆行为的统计信息
-gccapacity
显示各代容量和对应空间的统计信息
-gccause
显示有关垃圾收集统计信息的摘要,以及最近和当前(适用时)垃圾收集事件的原因
-gcnew
显示新生代行为的统计信息
-gcnewcapacity
显示有关新生代大小及其对应空间的统计信息
-gcold
显示有关老年代行为的统计信息和元空间统计信息
-gcoldcapacity
显示老年代大小的统计信息
-gcmetacapacity
显示有关元空间大小的统计信息
-gcutil
显示有关垃圾收集统计信息的摘要
-printcompilation
显示 Java HotSpot VM 编译方法统计信息
故障排查工具 jinfo 查看和调整 JVM 参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [root@localhost software] [root@localhost software] Attaching to process ID 1501, please wait ... Debugger attached successfully. Server compiler detected. JVM version is 25.302-b08 Non-default VM flags: -XX:CICompilerCount=2 -XX:InitialHeapSize=31457280 -XX:MaxHeapSize=478150656 -XX:MaxNewSize=159383552 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=10485760 -XX:OldSize=20971520 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC Command line: [root@localhost software] -XX:MaxHeapSize=478150656 [root@localhost software] -XX:-PrintGC [root@localhost software]
jmap 查看对象内存映射或堆内存详细信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [root@localhost software] [root@localhost software] * 导出堆快照文件 [root@localhost software] * 查看等待回收的对象信息 [root@localhost software] Attaching to process ID 1501, please wait ... Debugger attached successfully. Server compiler detected. JVM version is 25.302-b08 Number of objects pending for finalization: 0 * 查看堆中对象的统计信息 [root@localhost software] * 查看类加载器信息 [root@localhost software]
jstack 查看线程堆栈信息
1 2 [root@localhost software] [root@localhost software]
参数
作用
-l
显示有关锁的额外信息
-e
显示线程的额外信息
jhat 用来分析 jmap 生成的堆 Dump,使用 VisualVM 替代
jcmd 向正在运行的 JVM 发送诊断命令请求
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 [root@localhost software] 1501: The following commands are available: VM.unlock_commercial_features JFR.configure JFR.stop JFR.start JFR.dump JFR.check VM.native_memory ManagementAgent.stop ManagementAgent.start_local ManagementAgent.start VM.classloader_stats GC.rotate_log Thread.print GC.class_stats GC.class_histogram GC.heap_dump GC.finalizer_info GC.heap_info GC.run_finalization GC.run VM.uptime VM.dynlibs VM.flags VM.system_properties VM.command_line VM.version help jcmd 1501 Thread.print > 1501_thread.txt [root@localhost software] 1501: Heap dump file created [root@localhost software] 1948 sun.tools.jcmd.JCmd -l 1501 monitor_tuning-0.0.1-SNAPSHOT.jar
可视化工具 jconsole jvisualvm jmc MAT JITWatch