HotSpot JVM 가비지 수집에 대해 몇 가지 질문이 있습니다.HotSpot JVM이 젊은 생성 크기를 동적으로 변경합니까?
우리는 자바 프로세스가 실행이 있고 OPTS는 다음과 같습니다 당신이 보는대로, 최대 힙 크기는 약 90g
-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps
-Xloggc:/mnt/dfs/0/hdfs/logs/namenode.gc.log -XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles=1 -XX:GCLogFileSize=512M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled -XX:-DisableExplicitGC -XX:+UseCMSCompactAtFullCollection
-XX:+CMSClassUnloadingEnabled -XX:+UseCMSInitiatingOccupancyOnly -server -Xmx92160m -Xms92160m
-Xss256k -XX:MaxPermSize=256m -XX:MaxTenuringThreshold=15 -XX:+PrintTenuringDistribution
입니다.
this article에 따르면 기본값으로 NewRatio = 2 및 SurvivorRatio = 8입니다. 따라서 Eden 크기는 90G * 1/3 * 8/10 = 24G이어야하며 생존자 크기는 90G * 1/3 * 1/10 = 3G이어야합니다.
그러나 사실
, 내가 그러면 jstat 사용sudo jstat -gcnew 37082
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
48960.0 48960.0 0.0 5981.3 15 15 24480.0 391936.0 82332.7 13351 1379.450
에덴의 크기는 3백90메가바이트에 대해, 그리고 생존자 크기 만 48메가바이트합니다. 이것은 많은 젊은 세대를 일으 킵니다.
에덴 크기가 왜 그렇게 작습니까?
모든 세대 크기가 기본적으로 동적으로 조정된다는 사실을 알고 있습니다. 어떤 옵션도이를 변경하지 않는 것 같으므로 아마도 그것이 있어야 할 것입니다. VisualGC를 사용하여 VisualVM의 선택적 플러그인이라는 사실을 모니터 할 것을 권장합니다. –