【调优】JVM自带监控工具
1. jstat
jstat -gcutil 67008 5s 3
-
S0:第一个幸存区的使用百分比。在你的数据中,第一个幸存区(Survivor 0)的使用率为 25.00%。
-
S1:第二个幸存区的使用百分比。在你的数据中,第二个幸存区(Survivor 1)的使用率为 0.00%。
-
E:Eden 区的使用百分比。在你的数据中,Eden 区的使用率为 85.85%。
-
O:老年代的使用百分比。在你的数据中,老年代的使用率为 19.06%。
-
M:元空间(Metaspace)的使用百分比。在你的数据中,元空间的使用率为 95.69%。
-
CCS:压缩类空间的使用百分比。在你的数据中,压缩类空间的使用率为 93.65%。
-
YGC:年轻代垃圾回收的次数。在你的数据中,年轻代垃圾回收已经发生了 56 次。
-
YGCT:年轻代垃圾回收的总时间(秒)。在你的数据中,年轻代垃圾回收总共消耗了 0.273 秒。
-
FGC:老年代垃圾回收的次数。在你的数据中,老年代垃圾回收已经发生了 4 次。
-
FGCT:老年代垃圾回收的总时间(秒)。在你的数据中,老年代垃圾回收总共消耗了 0.293 秒。
-
GCT:总垃圾回收的时间,包括年轻代和老年代(秒)。在你的数据中,总垃圾回收时间为 0.566 秒。
查看pid为67008的进程的堆内存各个区域占用总容量百分比,5秒刷新一次,共查询3次
2. jstack
这个命令通常用于捕获Java线程堆栈跟踪
jstack 97598 | grep 17d40 -A20
JVM堆栈消耗
3. jinfo
jinfo -flags 15780
-
JVM 版本:JVM 版本是 "25.281-b09",它指示了 JVM 的构建版本。
-
VM flags:这是一些非默认的 JVM 参数,它们会影响 JVM 的行为。其中一些重要的参数包括:
-XX:MaxHeapSize=4273995776
:最大堆内存大小为 4,273,995,776 字节(大约 4 GB)。-XX:MaxNewSize=1424490496
:最大新生代大小为 1,424,490,496 字节(大约 1.35 GB)。-XX:UseParallelGC
:JVM 使用并行垃圾收集器(Parallel GC)。-XX:+UseCompressedClassPointers
和-XX:+UseCompressedOops
:启用压缩指针以减小内存占用。-XX:TieredStopAtLevel=1
:指定编译层次,可能与编译器优化有关。-XX:InitialHeapSize=268435456
:初始堆内存大小为 268,435,456 字节(大约 256 MB)。
-
Command line:这是 JVM 启动时的命令行参数,包括了一些启动参数和代理参数。其中一些参数包括:
-agentlib:jdwp=transport=dt_socket,address=127.0.0.1:62170,suspend=y,server=n
:指定了 Java 调试代理,允许远程调试。-javaagent:D:\java\skywalking-agent\skywalking-agent.jar
和-javaagent:C:\Users\Admin\AppData\Local\JetBrains\IntelliJIdea2020.3\captureAgent\debugger-agent.jar
:启用了 Java 代理,可能用于性能监控或调试。
查看jvm的参数
4. jmap
jmap -heap 15780 (1234为进程号)
-
JVM 版本:JVM 的版本是 "25.281-b09",它指示了 JVM 的构建版本。
-
垃圾收集器:JVM 正在使用 Parallel GC(并行垃圾收集器),它有 10 个线程用于执行垃圾回收。
-
堆配置:这部分提供了有关 JVM 堆内存的配置信息,包括最小和最大堆空闲比率、最大堆大小、新生代大小、老年代大小、新生代比率、Survivor 比率、元空间大小、压缩类空间大小等。
-
堆使用情况:这一部分提供了堆内存使用情况的统计数据:
PS Young Generation
是新生代的统计信息。Eden Space
是新生代的 Eden 区,显示了容量、已使用、剩余和使用率。From Space
和To Space
是新生代的幸存者区(Survivor Space)。PS Old Generation
是老年代的统计信息,显示了容量、已使用、剩余和使用率。- "interned Strings" 是字符串常量池中的统计信息,包括占用的内存和数量。
打印堆信息