반응형
Java GC(할당 실패)
왜 항상 "GC(Allocation Failure)"인가?
Linux-amd64 JRE(1.8.0_25-b17)용 Java HotSpot(TM) 64비트 서버 VM(25.25-b02)
CommandLine flags:
-XX:CMSInitiatingOccupancyFraction=60
-XX:GCLogFileSize=10485760
-XX:+HeapDumpOnOutOfMemoryError
-XX:InitialHeapSize=32212254720
-XX:MaxHeapSize=32212254720
-XX:NewRatio=10
-XX:OldPLABSize=16
-XX:ParallelGCThreads=4
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintStringTableStatistics
-XX:+PrintTenuringDistribution
-XX:StringTableSize=1000003
-XX:SurvivorRatio=4
-XX:TargetSurvivorRatio=50
-XX:+UseCompressedClassPointers
-XX:+UseCompressedOops
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
27.329: [GC (Allocation Failure) 27.329: [ParNew
Desired survivor size 44728320 bytes, new threshold 15 (max 15)
- age 1: 16885304 bytes, 16885304 total
: 349568K->16618K(436928K), 0.2069129 secs] 349568K->16618K(31369920K), 0.2070712 secs] [Times: user=0.78 sys=0.04, real=0.21 secs]
28.210: [GC (Allocation Failure) 28.210: [ParNew
Desired survivor size 44728320 bytes, new threshold 15 (max 15)
- age 1: 28866504 bytes, 28866504 total
- age 2: 12582536 bytes, 41449040 total
: 366186K->47987K(436928K), 0.2144807 secs] 366186K->47987K(31369920K), 0.2146024 secs] [Times: user=0.84 sys=0.01, real=0.22 secs]
29.037: [GC (Allocation Failure) 29.038: [ParNew
Desired survivor size 44728320 bytes, new threshold 2 (max 15)
- age 1: 28443488 bytes, 28443488 total
- age 2: 28386624 bytes, 56830112 total
- age 3: 12579928 bytes, 69410040 total
: 397555K->76018K(436928K), 0.2357352 secs] 397555K->76018K(31369920K), 0.2358535 secs] [Times: user=0.93 sys=0.01, real=0.23 secs]
"할당 실패"는 GC 사이클이 시작되는 원인입니다.
"할당 실패"는 Eden에 개체를 할당하기 위한 공간이 더 이상 남아 있지 않음을 의미합니다.젊은 GC의 정상적인 원인입니다.
이전 JVM은 마이너 GC 사이클의 GC 원인을 인쇄하지 않았습니다.
"할당 실패"는 경미한 GC에서만 발생할 수 있습니다.또단계('GC'의 경우)일 수 .+XX:+ScavengeBeforeRemark이네이블입니다).
"할당 실패"는 GC가 킥하는 원인이 아닙니다.이것은 GC 동작의 결과입니다.
GC는 할당할 공간이 없을 때 시작됩니다(지역 마이너 또는 메이저 GC 실행 여부에 따라 다름).공간이 충분히 확보되면 GC가 실행되지만 크기가 충분하지 않으면 실패합니다.할당 실패는 이러한 실패의 하나입니다.아래 문서에는 적절한 설명이 있습니다.https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/g1_gc.html
jdk1.8에서 CMS GC를 사용하면 이 오류가 해결되면 G1 Gc를 변경합니다.
-Xss512k -Xms6g -Xmx6g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=70 -XX:NewRatio=1 -XX:SurvivorRatio=6 -XX:G1ReservePercent=10 -XX:G1HeapRegionSize=32m -XX:ConcGCThreads=6 -Xloggc:gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
언급URL : https://stackoverflow.com/questions/28342736/java-gc-allocation-failure
반응형
'programing' 카테고리의 다른 글
| Nuxt는 .json 파일 데이터를 기반으로 동적 페이지를 생성합니다. (0) | 2022.07.26 |
|---|---|
| 작업을 사용할 때 Vuex가 상태를 업데이트하지 않음 (0) | 2022.07.25 |
| [Vue warn] :nextTick 오류: "NotFoundError: '노드'에서 'insertBefore'를 실행하지 못했습니다. (0) | 2022.07.25 |
| vue-chartj의 수평 스크롤 (0) | 2022.07.25 |
| 두 번째 클릭 후에만 모달 표시 (0) | 2022.07.25 |