JVM 启动参数
JAVA_OPTS = "-Xms4G -Xmx4G -Xmn2G -XX:MetaspaceSize=512M -XX:MaxMetaspaceSize=512M -XX:+UseParallelGC -XX:+PrintGCDetails -Xloggc:/home/gc.log -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC"
JVM 启动参数的设定
GC日志片段
OpenJDK 64-Bit Server VM (25.342-b07) for linux-amd64 JRE (1.8.0_342-b07), built on Jul 16 2022 09:19:19 by "openjdk" with gcc 4.4.7 20120313 (Red Hat 4.4.7-23) Memory: 4k page, physical 8388608k(8386904k free), swap 0k(0k free) CommandLine flags: -XX:CompressedClassSpaceSize=528482304 -XX:InitialHeapSize=4294967296 -XX:MaxHeapSize=4294967296 -XX:MaxMetaspaceSize=536870912 -XX:MaxNewSize=2147483648 -XX:MetaspaceSize=536870912 -XX:NewSize=2147483648 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC 2024-09-24T10:43:44.094+0800: 21.703: Total time for which application threads were stopped: 0.0015655 seconds, Stopping threads took: 0.0000978 seconds {Heap before GC invocations=11 (full 0): PSYoungGen total 1494528K, used 1466389K [0x0000000790800000, 0x00000007f0800000, 0x00000007f0800000) eden space 1414656K, 100% used [0x0000000790800000,0x00000007e6d80000,0x00000007e6d80000) from space 79872K, 64% used [0x00000007eba00000,0x00000007eec85748,0x00000007f0800000) to space 78336K, 0% used [0x00000007e6d80000,0x00000007e6d80000,0x00000007eba00000) ParOldGen total 2621440K, used 72408K [0x00000006f0800000, 0x0000000790800000, 0x0000000790800000) object space 2621440K, 2% used [0x00000006f0800000,0x00000006f4eb60e0,0x0000000790800000) Metaspace used 114761K, capacity 120350K, committed 120576K, reserved 1155072K class space used 13324K, capacity 14260K, committed 14336K, reserved 1048576K 2024-09-24T10:43:44.149+0800: 21.759: [GC (Allocation Failure) [PSYoungGen: 1466389K->41915K(1492992K)] 1538798K->152295K(4114432K), 0.0591035 secs] [Times: user=0.16 sys=0.01, real=0.06 secs] Heap after GC invocations=11 (full 0): PSYoungGen total 1492992K, used 41915K [0x0000000790800000, 0x00000007f0800000, 0x00000007f0800000) eden space 1414656K, 0% used [0x0000000790800000,0x0000000790800000,0x00000007e6d80000) from space 78336K, 53% used [0x00000007e6d80000,0x00000007e966ee58,0x00000007eba00000) to space 78336K, 0% used [0x00000007ebb80000,0x00000007ebb80000,0x00000007f0800000) ParOldGen total 2621440K, used 110380K [0x00000006f0800000, 0x0000000790800000, 0x0000000790800000) object space 2621440K, 4% used [0x00000006f0800000,0x00000006f73cb088,0x0000000790800000) Metaspace used 114761K, capacity 120350K, committed 120576K, reserved 1155072K class space used 13324K, capacity 14260K, committed 14336K, reserved 1048576K } 2024-09-24T10:43:44.209+0800: 21.818: Total time for which application threads were stopped: 0.0593724 seconds, Stopping threads took: 0.0000333 seconds {Heap before GC invocations=906 (full 2): PSYoungGen total 2065920K, used 2041627K [0x0000000760800000, 0x00000007e0800000, 0x00000007e0800000) eden space 2034688K, 100% used [0x0000000760800000,0x00000007dcb00000,0x00000007dcb00000) from space 31232K, 22% used [0x00000007de980000,0x00000007df046e10,0x00000007e0800000) to space 31232K, 0% used [0x00000007dcb00000,0x00000007dcb00000,0x00000007de980000) ParOldGen total 2097152K, used 2080736K [0x00000006e0800000, 0x0000000760800000, 0x0000000760800000) object space 2097152K, 99% used [0x00000006e0800000,0x000000075f7f8060,0x0000000760800000) Metaspace used 176015K, capacity 189742K, committed 191104K, reserved 1218560K class space used 19024K, capacity 21351K, committed 21632K, reserved 1048576K 2024-09-24T14:14:45.047+0800: 11571.644: [GC (Allocation Failure) [PSYoungGen: 2041627K->26414K(2061312K)] 4122363K->2109278K(4158464K), 0.0208053 secs] [Times: user=0.07 sys=0.00, real=0.02 secs] Heap after GC invocations=906 (full 2): PSYoungGen total 2061312K, used 26414K [0x0000000760800000, 0x00000007e0800000, 0x00000007e0800000) eden space 2034688K, 0% used [0x0000000760800000,0x0000000760800000,0x00000007dcb00000) from space 26624K, 99% used [0x00000007dcb00000,0x00000007de4cba70,0x00000007de500000) to space 33792K, 0% used [0x00000007de700000,0x00000007de700000,0x00000007e0800000) ParOldGen total 2097152K, used 2082863K [0x00000006e0800000, 0x0000000760800000, 0x0000000760800000) object space 2097152K, 99% used [0x00000006e0800000,0x000000075fa0be58,0x0000000760800000) Metaspace used 176015K, capacity 189742K, committed 191104K, reserved 1218560K class space used 19024K, capacity 21351K, committed 21632K, reserved 1048576K } {Heap before GC invocations=907 (full 3): PSYoungGen total 2061312K, used 26414K [0x0000000760800000, 0x00000007e0800000, 0x00000007e0800000) eden space 2034688K, 0% used [0x0000000760800000,0x0000000760800000,0x00000007dcb00000) from space 26624K, 99% used [0x00000007dcb00000,0x00000007de4cba70,0x00000007de500000) to space 33792K, 0% used [0x00000007de700000,0x00000007de700000,0x00000007e0800000) ParOldGen total 2097152K, used 2082863K [0x00000006e0800000, 0x0000000760800000, 0x0000000760800000) object space 2097152K, 99% used [0x00000006e0800000,0x000000075fa0be58,0x0000000760800000) Metaspace used 176015K, capacity 189742K, committed 191104K, reserved 1218560K class space used 19024K, capacity 21351K, committed 21632K, reserved 1048576K 2024-09-24T14:14:45.068+0800: 11571.665: [Full GC (Ergonomics) [PSYoungGen: 26414K->0K(2061312K)] [ParOldGen: 2082863K->300700K(2097152K)] 2109278K->300700K(4158464K), [Metaspace: 176015K->174750K(1218560K)], 0.6404574 secs] [Times: user=1.88 sys=0.00, real=0.64 secs] Heap after GC invocations=907 (full 3): PSYoungGen total 2061312K, used 0K [0x0000000760800000, 0x00000007e0800000, 0x00000007e0800000) eden space 2034688K, 0% used [0x0000000760800000,0x0000000760800000,0x00000007dcb00000) from space 26624K, 0% used [0x00000007dcb00000,0x00000007dcb00000,0x00000007de500000) to space 33792K, 0% used [0x00000007de700000,0x00000007de700000,0x00000007e0800000) ParOldGen total 2097152K, used 300700K [0x00000006e0800000, 0x0000000760800000, 0x0000000760800000) object space 2097152K, 14% used [0x00000006e0800000,0x00000006f2da7140,0x0000000760800000) Metaspace used 174750K, capacity 187618K, committed 191104K, reserved 1218560K class space used 18827K, capacity 20997K, committed 21632K, reserved 1048576K }
应用程序的暂停时间
在 GC 过程中,应用程序的所有线程都会被暂停,这称为 "Stop-The-World"(STW)事件。暂停时间直接影响应用的性能和响应速度。
日志示例:
2024-09-24T10:43:44.094+0800: 21.703: Total time for which application threads were stopped: 0.0015655 seconds, Stopping threads took: 0.0000978 seconds
Total time for which application threads were stopped:
Stopping threads took:
GC(Minor GC)
日志示例
2024-09-24T10:43:44.149+0800: 21.759: [GC (Allocation Failure) [PSYoungGen: 1466389K->41915K(1492992K)] 1538798K->152295K(4114432K), 0.0591035 secs]
Full GC
日志示例:
2024-09-24T14:14:45.068+0800: 11571.665: [Full GC (Ergonomics) [PSYoungGen: 26414K->0K(2061312K)] [ParOldGen: 2082863K->300700K(2097152K)] 2109278K->300700K(4158464K), [Metaspace: 176015K->174750K(1218560K)], 0.6404574 secs]
堆内存的详细状态
由于使用了 -XX:+PrintHeapAtGC 参数,GC 日志中会在每次 GC 前后打印堆内存的详细状态,包括各内存区域的容量和使用情况。
日志示例:
Heap before GC invocations=11 (full 0): PSYoungGen total 1494528K, used 1466389K [0x0000000790800000, 0x00000007f0800000, 0x00000007f0800000) eden space 1414656K, 100% used [0x0000000790800000,0x00000007e6d80000,0x00000007e6d80000) from space 79872K, 64% used [0x00000007eba00000,0x00000007eec85748,0x00000007f0800000) to space 78336K, 0% used [0x00000007e6d80000,0x00000007e6d80000,0x00000007eba00000) ParOldGen total 2621440K, used 72408K [0x00000006f0800000, 0x0000000790800000, 0x0000000790800000) object space 2621440K, 2% used [0x00000006f0800000,0x00000006f4eb60e0,0x0000000790800000) Metaspace used 114761K, capacity 120350K, committed 120576K, reserved 1155072K class space used 13324K, capacity 14260K, committed 14336K, reserved 1048576K
PSYoungGen(年轻代):
ParOldGen(老年代):
Metaspace(元空间):
JVM 启动参数和 GC 日志的对应关系
由于手动设置了 JVM 启动参数,GC 日志中包含了更详细的信息,这些信息有助于深入分析:
内存分配和使用情况:
时间戳信息:
GC 事件的详细信息:
以上是ParallelGC 日志详解的详细内容。更多信息请关注PHP中文网其他相关文章!