>  기사  >  Java  >  ParallelGC 로그에 대한 자세한 설명

ParallelGC 로그에 대한 자세한 설명

Patricia Arquette
Patricia Arquette원래의
2024-09-24 16:15:49885검색

ParallelGC 日志详解

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 시작 매개변수 설정

  • -XX:+PrintGCDetails: 각 가비지 수집 후 힙 메모리 사용량, 수집 전후 상태 등 GC의 세부 정보를 출력합니다.
  • -Xloggc:/home/gc.log: GC 로그를 콘솔에 출력하는 대신 /home/gc.log 파일에 저장합니다. 이를 통해 애플리케이션이 실행된 후 로그를 분석할 수 있습니다.
  • -XX:+PrintGCDateStamps: 가비지 수집이 발생한 시간을 쉽게 볼 수 있도록 각 GC 로그 레코드에 날짜 스탬프를 추가합니다.
  • -XX:+PrintGCTimeStamps: JVM 시작 후 경과 시간을 각 GC 로그에 초 단위로 추가합니다.
  • -XX:+PrintHeapAtGC: 각 세대(젊은 세대, 오래된 세대, 메타스페이스)의 메모리 할당을 포함하여 가비지 수집 전후의 힙의 자세한 상태를 인쇄합니다.
  • -XX:+UseParallelGC: 병렬 GC(병렬 가비지 수집기)를 사용하여 여러 스레드와 병렬로 가비지 수집을 실행하여 성능을 향상시킵니다.

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

애플리케이션 스레드가 중지된 총 시간:

  • 애플리케이션 스레드가 일시 중지된 총 시간은 0.0015655초(~1.57밀리초)입니다.

스레드를 중지하는 데 걸린 시간:

  • 스레드를 일시 중지하는 데 소요된 시간, 여기서는 0.0000978초(약 0.098밀리초)입니다.

GC(마이너 GC)

로그 예시

2024-09-24T10:43:44.149+0800: 21.759: [GC (Allocation Failure) [PSYoungGen: 1466389K->41915K(1492992K)] 1538798K->152295K(4114432K), 0.0591035 secs]
  • GC 유형: Minor GC, 메모리 할당 실패(Allocation Failure)로 인해 발생합니다.
  • 젊은 세대 변경: 1466389K에서 41915K로 감소, 총 용량 1492992K.
  • 힙 메모리의 총 변화: 1538798K에서 152295K, 총 용량 4114432K.
  • 걸린 시간: 0.0591035초(약 59밀리초).

전체 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]
  • GC 유형: JVM 적응 메커니즘(인체공학)에 의해 트리거되는 전체 GC입니다.
  • 젊은 세대 변화: 26414K에서 0K로, 젊은 세대가 완전히 재활용되었음을 나타냅니다.
  • 기존 세대 변경: 2082863K에서 300700K로 줄어들어 많은 메모리가 확보되었습니다.
  • 힙 메모리의 총 변화: 2109278K에서 300700K, 총 용량 4158464K.
  • 메타공간 변경: 176015K에서 174750K로 감소되었습니다.
  • 걸린 시간: 0.6404574초(약 640밀리초)

힙 메모리 상세 현황

-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(젊은 세대):

    • 전체(총 용량): 1494528K.
    • 사용: 1466389K.
    • 에덴공간(Eden Area) : 용량 1414656K, 이용률 100%.
    • 우주에서(생존 지역): 용량 79872K, 사용률 64%.
    • 우주(생존자 영역): 용량 78336K, 사용되지 않음.
  • ParOldGen(구세대):

    • 전체(총 용량): 2621440K.
    • 사용 : 72408K, 사용률은 2% 정도입니다.
  • 메타공간:

    • 사용: 114761K.
    • 용량: 120350K.

JVM 시작 매개변수와 GC 로그의 대응

JVM 시작 매개변수를 수동으로 설정하기 때문에 GC 로그에는 심층 분석에 도움이 될 수 있는 더 자세한 정보가 포함되어 있습니다.

  • 메모리 할당 및 사용:

    • -XX:+PrintHeapAtGC를 사용하면 각 GC 전후의 힙 메모리 상태를 확인하고 각 영역의 메모리 할당 및 사용량을 이해할 수 있습니다.
  • 타임스탬프 정보:

    • -XX:+PrintGCDateStamps 및 -XX:+PrintGCTimeStamps는 GC 이벤트의 시점 및 간격 분석을 용이하게 하는 정확한 시간 정보를 제공합니다.
  • GC 이벤트 세부정보:

    • -XX:+PrintGCDetails는 GC 이벤트 유형, 발생 이유, 메모리 재활용 상태 및 시간 소비와 같은 자세한 정보를 출력합니다.

위 내용은 ParallelGC 로그에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.