0
点赞
收藏
分享

微信扫一扫

JVM日志和GC日志

夏沐沐 2022-12-31 阅读 158


JVM日志

1.JVM参数格式
(1).以-开头
查看JDK版本。

java -version

(2).以-X开头
设置最大堆内存大小为50m。

java -Xmx50m

(3).以-XX开头
使用G1垃圾回收器

java -XX:+UseG1GC

2.JVM参数分类
(1).标准选项
用于执行常见操作,例如检查JDK版本、设置路径、启用详细输出等。格式不统一,使用java -help查看支持的参数。

java -help

(2).非标准选项
HotSpot的通用选项,格式统一,使用java -X查看支持的参数。

java -X

(3).高级选项
高级选项是为开发人员提供的选项,用于调整Java HotSpot虚拟机特定区域的,这些区域通常具有特定的系统要求,并且可能需要配置访问权限。格式统一,使用如下命令可以查看支持的参数。

java -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsInitial

3.常见JVM参数

参数

含义

-Xms50m

最小堆内存

-Xmx50m

最大堆内存

-Xss

线程栈内存

-Xmn

年轻代大小

-XX:MetaspaceSize=1m

元空间初始化内存

-XX:MaxMetaspaceSize=1m

元空间最大内存

-XX:+UseG1GC

使用G1垃圾收集器

-XX:+UseConcurrentMarkSweepGC

使用CMS垃圾收集器

-XX:+PrintGCDetails

垃圾收集详情

-XX:+PrintGCDateStamps

垃圾收集日期

-XX:+PrintGCTimeStamps

垃圾收集时间戳

-XX:+PrintGCCause

垃圾收集原因

-Xloggc:/Users/wenlei/Documents/gc.log

GC日志文件

-XX:+TraceClassLoading

类加载情况

-XX:+TraceBiasedLocking

偏向锁信息

4.实战

-Xms50m -Xmx50m -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintGCCause -Xloggc:/Users/wenlei/Documents/gc.log

Java HotSpot(TM) 64-Bit Server VM (25.144-b01) for bsd-amd64 JRE (1.8.0_144-b01), built on Jul 21 2017 22:07:42 by "java_re" with gcc 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
Memory: 4k page, physical 16777216k(109268k free)

/proc/meminfo:

CommandLine flags: -XX:-BytecodeVerificationLocal -XX:-BytecodeVerificationRemote -XX:InitialHeapSize=52428800 -XX:+ManagementServer -XX:MaxHeapSize=52428800 -XX:+PrintGC -XX:+PrintGCCause -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:TieredStopAtLevel=1 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC
2022-12-25T22:14:33.422-0800: 0.517: [GC (Allocation Failure) [PSYoungGen: 12800K->2037K(14848K)] 12800K->2683K(49152K), 0.0091926 secs] [Times: user=0.02 sys=0.01, real=0.01 secs]
2022-12-25T22:14:36.198-0800: 3.293: [GC (Metadata GC Threshold) [PSYoungGen: 3833K->342K(14336K)] 21349K->18514K(48640K), 0.0010944 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
2022-12-25T22:14:36.199-0800: 3.294: [Full GC (Metadata GC Threshold) [PSYoungGen: 342K->0K(14336K)] [ParOldGen: 18171K->15222K(34304K)] 18514K->15222K(48640K), [Metaspace: 33795K->33795K(1079296K)], 0.0669281 secs] [Times: user=0.26 sys=0.02, real=0.07 secs]

GC日志

1.YoungGC

XX:TieredStopAtLevel=1 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC 
2022-12-25T22:14:33.422-0800: 0.517: [GC (Allocation Failure) [PSYoungGen: 12800K->2037K(14848K)] 12800K->2683K(49152K), 0.0091926 secs] [Times: user=0.02 sys=0.01, real=0.01 secs]

  • 2022-12-25T22:14:33.422-0800:当前时间戳,由PrintGCDateStamps打印
  • 0.517:当前相对时间戳,表示应用启动多久后触发,由PrintGCTimeStamps打印
  • GC (Allocation Failure):造成GC的原因,由PrintGCCause打印
  • PSYoungGen:12800K->2037K(14848K)
  • PSYoungGen:垃圾收集器类型
  • PSYoungGen:Parallel Scavenge
  • ParNew:ParNew
  • DefNew:Serial
  • G1:G1
  • 12800K:回收前,年轻代使用的大小
  • 2037K:回收后,年轻代使用的大小
  • 14848K:年轻代总大小
  • 12800K:回收之前,堆内存使用的大小
  • 2683K:回收之后,堆内存使用的大小
  • 49152K:堆内存总大小
  • 0.0091926 secs:垃圾收集器判断出需要垃圾回收到垃圾回收结束所花费的时间
  • user=0.02:用户耗时
  • sys=0.01:系统耗时
  • real=0.01 secs:实际耗时

2.FullGC

2022-12-25T22:14:36.199-0800: 3.294: [Full GC (Metadata GC Threshold) [PSYoungGen: 342K->0K(14336K)] [ParOldGen: 18171K->15222K(34304K)] 18514K->15222K(48640K), [Metaspace: 33795K->33795K(1079296K)], 0.0669281 secs] [Times: user=0.26 sys=0.02, real=0.07 secs]

  • 2022-12-25T22:14:36.199-0800:当前时间戳,由PrintGCDateStamps打印
  • 3.294:当前相对时间戳,表示应用启动多久后触发,由PrintGCTimeStamps打印
  • Full GC (Metadata GC Threshold):造成GC的原因,由PrintGCCause打印
  • ParOldGen: 18171K->15222K(34304K)
  • ParOldGen:垃圾收集器类型
  • ParOldGen:Parallel Old
  • DefNew:Serial Old
  • CMS:CMS
  • 18171K:回收前,老年代使用的大小
  • 15222K:回收后,老年代使用的大小
  • 34304K:老年代总大小
  • 18514K:回收之前,堆内存使用的大小
  • 15222K:回收之后,堆内存使用的大小
  • 48640K:堆内存总大小
  • 0.0669281 secs:垃圾收集器判断出需要垃圾回收到垃圾回收结束所花费的时间

3.使用G1垃圾收集器

-Xms50m -Xmx50m -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintGCCause -XX:+UseG1GC -Xloggc:/Users/wenlei/Documents/gc.log

#1.初始标记(Stop The World)
2022-12-25T22:49:27.545-0800: 1.191: [GC pause (Metadata GC Threshold) (young) (initial-mark), 0.0044215 secs]
[Parallel Time: 3.8 ms, GC Workers: 8]
[GC Worker Start (ms): Min: 1190.7, Avg: 1190.8, Max: 1190.9, Diff: 0.2]
[Ext Root Scanning (ms): Min: 0.9, Avg: 1.4, Max: 1.8, Diff: 0.9, Sum: 10.8]
[Update RS (ms): Min: 0.0, Avg: 0.2, Max: 0.5, Diff: 0.5, Sum: 1.4]
[Processed Buffers: Min: 0, Avg: 2.1, Max: 5, Diff: 5, Sum: 17]
[Scan RS (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
[Code Root Scanning (ms): Min: 0.0, Avg: 0.4, Max: 1.8, Diff: 1.8, Sum: 3.4]
[Object Copy (ms): Min: 0.3, Avg: 1.1, Max: 1.7, Diff: 1.4, Sum: 9.2]
[Termination (ms): Min: 0.0, Avg: 0.5, Max: 0.6, Diff: 0.6, Sum: 4.1]
[Termination Attempts: Min: 1, Avg: 16.5, Max: 28, Diff: 27, Sum: 132]
[GC Worker Other (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.1]
[GC Worker Total (ms): Min: 3.5, Avg: 3.6, Max: 3.7, Diff: 0.2, Sum: 29.1]
[GC Worker End (ms): Min: 1194.4, Avg: 1194.4, Max: 1194.4, Diff: 0.0]
[Code Root Fixup: 0.0 ms]
[Code Root Purge: 0.0 ms]
[Clear CT: 0.1 ms]
[Other: 0.6 ms]
[Choose CSet: 0.0 ms]
[Ref Proc: 0.4 ms]
[Ref Enq: 0.0 ms]
[Redirty Cards: 0.0 ms]
[Humongous Register: 0.0 ms]
[Humongous Reclaim: 0.0 ms]
[Free CSet: 0.0 ms]
[Eden: 26.0M(26.0M)->0.0B(26.0M) Survivors: 4096.0K->4096.0K Heap: 38.1M(50.0M)->12.8M(50.0M)]
[Times: user=0.02 sys=0.00, real=0.01 secs]
#开始扫描初始标记阶段Survivor区的Roots对象
2022-12-25T22:49:27.550-0800: 1.195: [GC concurrent-root-region-scan-start]
#扫描完成
2022-12-25T22:49:27.552-0800: 1.197: [GC concurrent-root-region-scan-end, 0.0014173 secs]
#2.并发标记
2022-12-25T22:49:27.552-0800: 1.197: [GC concurrent-mark-start]
#并发标记结束
2022-12-25T22:49:27.553-0800: 1.199: [GC concurrent-mark-end, 0.0019070 secs]
#3.最终标记
2022-12-25T22:49:27.554-0800: 1.199: [GC remark 2022-12-25T22:49:27.554-0800: 1.199: [Finalize Marking, 0.0001990 secs] 2022-12-25T22:49:27.554-0800: 1.200: [GC ref-proc, 0.0000403 secs] 2022-12-25T22:49:27.554-0800: 1.200: [Unloading, 0.0065358 secs], 0.0070309 secs]
[Times: user=0.01 sys=0.01, real=0.01 secs]
#4.筛选回收(Stop The World)
#没有存活对象的Old Region和Humongous Region将被释放和清空
#为了准备下次GC,在CSet的Old Region会根据他们的回收收益进行排序
2022-12-25T22:49:27.561-0800: 1.207: [GC cleanup 14M->12M(50M), 0.0002877 secs]
[Times: user=0.00 sys=0.00, real=0.00 secs]
#并发清理开始
2022-12-25T22:49:27.563-0800: 1.208: [GC concurrent-cleanup-start]
#并发清理结束
2022-12-25T22:49:27.563-0800: 1.208: [GC concurrent-cleanup-end, 0.0000083 secs]


举报

相关推荐

0 条评论