åã®èšäºã§ ãJava HotSpot VMãä»ã®å€ãã®ä»®æ³ãã·ã³ã®ã¬ããŒãžã³ã¬ã¯ã¿ãŒã®åºç€ãšãªãçšèªãšåºæ¬çãªã¢ã€ãã¢ã玹ä»ããŸããã ããã§ããããã·ã£ãã«ãæã«åããããŒããããéããããšãã§ããŸãã 仿¥ãç§ãã¡ã®ã¬ãã¥ãŒã«ã¯
2ã€ã®ã·ã£ãã«ããããŸã
ã2ã€ã®ã¬ããŒãžã³ã¬ã¯ã¿ãŒã¯ãå€ãã®Javaããã°ã©ã ã§äœ¿çšãããŠãããå€ãã®å ŽåãããèªèããŠããŸããã ãããã¯ãã·ãªã¢ã«GCãšãã©ã¬ã«GCã§ãã ãããã®äººæ°ã¯ç°¡åã«èª¬æãããŠããŸã-ãããã®ã³ã¬ã¯ã¿ãŒã¯ãã»ãšãã©ã®ããŒããŠã§ã¢æ§æã®ä»®æ³ãã·ã³ã«ãã£ãŠããã©ã«ãã§éžæãããŠããŸãã
ãããã®ã³ã¬ã¯ã¿ãŒã§äœ¿çšãããããŒããäœããã®åœ¢ã§äœ¿çšããã¢ãããŒãã¯ãããé«åºŠãªå®è£
ã§äœ¿çšãããããããã®æ®µéã§ã¯ããããã«çµã¿èŸŒãŸããŠããã¢ã€ãã¢ãšæ©äŒã«å¯ŸåŠããããšãéåžžã«éèŠã«ãªããŸãã
ã·ãªã¢ã«GC
ã·ãªã¢ã«GCïŒå¥åã·ãªã¢ã«ã³ã¬ã¯ã¿ãŒïŒã¯ãçµã¿èŸŒãŸããŠããæ©èœã®é¢ã§ã¯æå¹Žå°ã§ãããJVMã®ã¬ããŒãžã³ã¬ã¯ã¿ãŒã®æéã®é¢ã§ã¯äžçŽã§ãã ç§ãã¡ã®å€ããJavaèšèªã®ååšãçããªãå Žåã§ãã圌ã¯ãã£ãããšãããã確å®ã«ãŽããåéããŸããã ãããŠããŸã åéãç¶ããŠããŸãã åãããããã£ããã§ãããåãããã«çå®ã§ãã
ãããããã¹ãŠã®ããã°ã©ã ã«å€§ããªããŒããããããã§ã¯ãªãããã¹ãŠã®ããã°ã©ã ã匷åãªãã«ãã³ã¢ããã»ããµãæèŒããã³ã³ãã¥ãŒã¿ãŒã§åäœããããã§ã¯ãªããããåœŒã¯æŽå²ã®ç«¯ãŸã§è¡ããŸããã§ããã ãã®ãããªã¹ãã«ã¿ã®ç¶æ³ã§ã¯ã圌ã¯éåžžã«åœ¹ã«ç«ã¡ãŸãã JVMã§ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãå®è£
ããããã®åºæ¬çãªã¢ãããŒããããã§èª¬æãããŠããã®ã§ããããããªãã®ã±ãŒã¹ã§ã¯ãªãå Žåã§ãããã®ç« ãã¹ãããããªãã§ãã ããã
ã·ãªã¢ã«GCã®äœ¿çšã¯ã
-XXïŒ+ UseSerialGCãªãã·ã§ã³ã§æå¹ã«ãªã
ãŸã ã
åäœåç
ãã®ã³ã¬ã¯ã¿ãŒã䜿çšããå ŽåãããŒãã¯4ã€ã®é åã«åå²ãããŸãã3ã€ã®é åã¯è¥ãäžä»£ïŒEdenãSurvivor 0ããã³Survivor 1ïŒã«å±ãã1ã€ïŒTenuredïŒã¯å€ãé åã«å±ããŸãã
å¹³åçãªãªããžã§ã¯ãã¯ããšãã³å°åã§ã®ç掻ãå§ããŸãïŒãšãã³ãšããŠç¿»èš³ãããŸãããããã¯éåžžã«è«ççã§ãïŒã ããã¯ãJVMãäœææã«é
眮ããå Žæã§ãã ããããæéãçµã€ã«ã€ããŠããšãã³ã«æ°ããäœæããããªããžã§ã¯ãã®ã¹ããŒã¹ããªãããšã倿ããå ŽåããããŸãããã®ãããªå Žåãå°ããªã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãéå§ãããŸãã
ãŸãããã®ãããªã¢ã»ã³ããªã¯ããšãã³ããæ»ãã ãªããžã§ã¯ããèŠã€ããŠåé€ããŸãã æ®ãã®çããŠãããªããžã§ã¯ãã¯ã空ã®SurvivorãªãŒãžã§ã³ã«è»¢éãããŸãã 2ã€ã®SurvivorãªãŒãžã§ã³ã®1ã€ã¯åžžã«ç©ºã§ããEdenãããªããžã§ã¯ãã転éããããã«éžæãããã®ã¯åœŒã§ãã
å°ããªã¢ã»ã³ããªã®åŸããšãã³å°åã¯å®å
šã«ç©ºã«ãªããæ°ããæœèšãå容ããããã«äœ¿çšã§ããããšãããããŸãã ããããé
ããæ©ãããã¢ããªã±ãŒã·ã§ã³ã¯åã³ãšãã³ãšãªã¢å
šäœãå æããJVMã¯åã³å°ããªã¢ã»ã³ããªãäœæããããšããŸããä»åã¯ãšãã³ãšããŒãã¿ã€ã ãµãã€ããŒ0ãã¯ãªã¢ãããã®åŸãçãæ®ã£ããªããžã§ã¯ãããã¹ãŠç©ºã®é åãµãã€ããŒ1ã«ç§»åããŸãã
次åãSurvivor 0ããã¹ãã£ããŒã·ã§ã³ãªãŒãžã§ã³ãšããŠåã³éžæãããŸãããSurvivorãªãŒãžã§ã³ã«ååãªã¹ããŒã¹ãããéãããã¹ãŠãããŸããããŸãã
JVMã¯ããªããžã§ã¯ããSurvivor 0ãšSurvivor 1ã®éãç§»åããæéãåžžã«ç£èŠãããã®ãããªç§»åã®æ°ã«é©ãããããå€ãéžæããŸãããã®åŸããªããžã§ã¯ãã¯Tenuredã«ç§»åããŸããã€ãŸããå€ãäžä»£ã«ç§»åããŸãã Survivoré åããã£ã±ãã«ãªããšããã®é åã®ãªããžã§ã¯ããTenuredã«éä¿¡ãããŸãã
èšè¿°ãããŠããå°ããªã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®ããã»ã¹ã¯éåžžã«ç°¡åã§ãããSurvivorãªãŒãžã§ã³ïŒæ£ç¢ºã«ã¯2ã€ïŒã䜿çšããçç±ã¯å¿
ãããæç¢ºã§ã¯ãããŸããã ãã®èšäºã®ç¯å²ãè¶
ããçç±ã®è©³çްãªèª¬æã¯æ®ããŸãïŒ
ã³ã¡ã³ãã§èª¬æã
ãŸã ïŒããããã§ã¯ãåç¶ãããªããžã§ã¯ããæäœããäž»ãª2ã€ã®æ¹æ³-ã³ã³ãã¯ã·ã§ã³ãšã³ããŒ-ããSunã§å°ããªã¬ããŒãžã³ã¬ã¯ã¿ãŒãéçºãããšãã«ã2çªç®ã®æ¹æ³ã§è¡ã£ããããå®è£
ãã©ã®ããã«ç°¡åã§ãå€ãã®å Žåãçç£æ§ãåäžããããšã蚌æãããŠããŸãã
ãã§ã«Tenuredã«æ°ãããªããžã§ã¯ããå
¥ããååãªã¹ããŒã¹ããªãå Žåãå®å
šãªã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãäœçšããäž¡æ¹ã®äžä»£ã®ãªããžã§ã¯ããæäœããŸãã åæã«ãå€ãäžä»£ã¯è¥ãäžä»£ãšåæ§ã«ãµããªãŒãžã§ã³ã«åå²ãããã1ã€ã®å€§ããªã¡ã¢ãªã衚ããŸãããããã£ãŠãTenuredããããããªããžã§ã¯ããåé€ããåŸãããŒã¿ã¯è»¢éãããŸããïŒè»¢éããå Žæã¯ãããŸããïŒããå§çž®ãããŸããã€ãŸããæçåããã«é çªã«é
眮ãããŸãã ãã®ãããªã¯ãªãŒãã³ã°ã¡ã«ããºã ã¯ããã®ã¹ãããã®ååããMark-Sweep-CompactãšåŒã°ããŸãïŒçåãªããžã§ã¯ãã®ããŒã¯ãæ»ãã ãªããžã§ã¯ãã®ã¡ã¢ãªã®ã¯ãªã¢ãçåãªããžã§ã¯ãã®ã³ã³ãã¯ãåïŒã
å éãã
ã»ãšãã©ã®æ³šææ·±ãèªè
ã¯ããããããä»äºã®ååã®èª¬æã®åé ã§ã
å¹³åçãªãªããžã§ã¯ãã¯ãšãã³ã»ã¯ã·ã§ã³ã§äœæãããŠããããšãã³ã»ã¯ã·ã§ã³ã§ã¯äœæãããŠããªãããšã«æ°ã¥ããã§ãããã ãã®ãããªäºçŽã¯ãçç±ã®ããã«è¡ãããŸããã å®éã«ã¯ããµã€ãºãéåžžã«å€§ããå éãªããžã§ã¯ãããŸã ååšãããããEdenã§ãªããžã§ã¯ããäœæããSurvivorsã«æ²¿ã£ãŠãã©ãã°ãããšã³ã¹ããããããããŸãã ãã®å Žåããããã¯ããã«Tenuredã«é
眮ãããŸãã
ãã€ã«ã¯å°ããã§ããïŒ
説æãããŠããããã»ã¹ã®éèŠãªèŠçŽ ã¯ãããŒãã®çµ¶å¯Ÿãµã€ãºãšããŒãå
ã®é åã®çžå¯Ÿãµã€ãºã§ãã
ããŒããããŒã¿ã§ãã£ã±ãã«ãªããšãJVMã¯ã¡ã¢ãªãã¯ãªãŒã³ã«ããã ãã§ãªããOSã«é åãæ¡åŒµããããã«è¿œå ã®ã¡ã¢ãªãå²ãåœãŠãããã«èŠæ±ã§ããŸãã ããã«ãå®éã«äœ¿çšãããŠããã¡ã¢ãªãç¹å®ã®ãããå€ãäžåã£ãå ŽåãJVMã¯ã¡ã¢ãªã®äžéšããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«è¿ãããšãã§ããŸãã ä»®æ³ãã·ã³ã®é£æ¬²ãå¶åŸ¡ããããã«ã
Xmsããã³
Xmxãªãã·ã§ã³ããã¹ãŠç¥ãããŠããŸãã
ãŸããããŒãã®å¢çå€ãèšå®ããã ãã§ããã°ã©ã ãåäœããæããã«é
ããªããªãå ŽåããããŸãããå¿
èŠãªããã©ãŒãã³ã¹ãéæããããã®ã³ã¬ã¯ã¿ãŒã®åŸ®èª¿æŽã¯ãç°ãªãé åã®ãµã€ãºã調æŽããããšã§å®è¡ãããŸãã ãã®ãããªèŠå¶ã®äŸãšããã°ã©ã ã®äœæ¥ãžã®åœ±é¿ã«ã€ããŠã¯å¥ã®èšäºã§æ€èšããŸãããããã§ã¯ãããè¡ãããã®ãã©ã¡ãŒã¿ãŒããªã¹ãããŸãïŒä»¥äžãåç
§ïŒã
ãŸããããã©ã«ãã§ã¯ãè¥ãäžä»£ãããŒãå
šäœã®3åã®1ãå æããå€ãäžä»£ããããã3åã®2ãå æããããšã«ã泚æããŠãã ããã ããã«ãåãµãã€ããŒé åã¯è¥ãäžä»£ã®10åã®1ãå æããŸããã€ãŸãããšãã³ã¯10åã®8ãå æããŸãã ãã®çµæãããã©ã«ãã§ã¯ãé åã®å®éã®å²åã¯æ¬¡ã®ããã«ãªããŸãã
ããããæå€§éã®ã¡ã¢ãªãå²ãåœãŠãŠå®å
šã«ã¯ãªãŒãã³ã°ããåŸã§ããæ°ãããªããžã§ã¯ãã®ããã®å Žæããªãå Žåã¯ã©ããªããŸããïŒ ãã®å Žåãäºæ³ããã
java.lang.OutOfMemoryErrorïŒJavaããŒãã¹ããŒã¹ãšã¢ããªã±ãŒã·ã§ã³ã®åäœã忢ããåæçšã®ãã¡ã€ã«åœ¢åŒã®ããŒããæ®ããŸãã æè¡çã«ã¯ãã³ã¬ã¯ã¿ã®äœæ¥ã«å°ãªããšã98ïŒ
ã®æéããããå§ããã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãã¡ã¢ãªã®2ïŒ
以äžããè§£æŸããªãå Žåã«çºçããŸãã
STWã®ç¶æ³
ãã®ã³ã¬ã¯ã¿ãŒã§ã¯ã圌ã®äœåã¯ãã¹ãŠ1ã€ã®å
å®ãª
STWã§ããããããã¹ãŠãéåžžã«åçŽã§ãã åã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®éå§æã«ãã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ã¹ã¬ããã®åäœã¯åæ¢ããã¢ã»ã³ããªã®å®äºåŸã«ã®ã¿åéããŸãã ããã«ãSerial GCã®ã¯ãªãŒãã³ã°äœæ¥ã¯ãã¹ãŠã1ã€ã®ã¹ã¬ããã§ãã£ãããšé çªã«å®è¡ããããã®ããã«åœŒã®ååãæäžãããŸããã
ã«ã¹ã¿ãã€ãº
Xmsãªãã·ã§ã³ãš
Xmxãªãã·ã§ã³ã䜿çšããŠãåæèš±å®¹ããŒããµã€ãºãšæå€§èš±å®¹ããŒããµã€ãºãããããæ§æã§ãããšããäºå®ã«ã€ããŠã¯æ¢ã«è§ŠããŸããã 確ãã«ããªãã®ã»ãšãã©ã¯ãã§ã«ãããè¡ã£ãŠããŸãã ã§ã¯ãããã«æ·±ãæãäžããŠã¿ãŸãããã
-XXãªãã·ã§ã³ããããŸã
ïŒMinHeapFreeRatio =ïŒ ããã³
-XXïŒMaxHeapFreeRatio =ïŒ ãåäžä»£ã®ç©ºãé åã®æå°ããã³æå€§ã®å²åãæå®ããŸãããã®ãµã€ãºã«éãããšãäžä»£ãµã€ãºãããããèªåçã«å¢æžããŸãã ããšãã°ã
MinHeapFreeRatio = 35ã®å Žåãä»»æã®äžä»£ã®ç©ºãé åã®ã·ã§ã¢ã35ïŒ
ãäžåããšããã®äžä»£ã«ã¯å°ãªããšã35ïŒ
ã空ãã«ãªãããã«è¿œå ã®é åãæäŸãããŸãã åæ§ã«ã
MaxHeapFreeRatio = 65ã®å Žåãäžä»£ã®ç©ºãé åã®ã·ã§ã¢ã65ïŒ
以äžã«ãªããšããã®äžä»£ã«å²ãåœãŠãããã¡ã¢ãªã®äžéšãè§£æŸãããç®çã®ãããå€ã«æ»ããŸãã ãããã®ãã©ã¡ãŒã¿ãŒã®ããã©ã«ãå€ã¯ãã³ã³ãã¥ãŒã¿ãŒã®ããŒããŠã§ã¢ç¹æ§ã«ãã£ãŠç°ãªããŸãã
-XXãªãã·ã§ã³ã䜿çšããŠãè¥ãäžä»£ã®é åã®åèšãµã€ãºã«å¯Ÿããå€ãäžä»£ã®ãµã€ãºã®æãŸããæ¯çãèšå®ã§ããŸã
ãNewRatio =ïŒ ã ããšãã°ã
NewRatio = 3ã¯ãè¥ãäžä»£ïŒEden + S0 + S1ïŒã§ã¯ããŒãã®4åã®1ãå²ãåœãŠãããå€ãäžä»£ã§ã¯4åã®3ãå²ãåœãŠãããããšãæå³ããŸãã ãã®ãªãã·ã§ã³ã®çŽæã«åããååã¯ãOracleã®ããã¥ã¡ã³ãã«ãæ··ä¹±ãæããŸããããã®ããã«æ©èœããŸãã ãªãã·ã§ã³åã
Ratioã§çµããå Žåãå®éã®å€ã¯æå®ããå€ã®éæ°ã«ãªãããšãèŠããŠããã®ã¯ç°¡åã§ãã
å¿
èŠã«å¿ããŠã
-XXãªãã·ã§ã³ã䜿çšããŠãè¥ãäžä»£ã®ãµã€ãºãäžäžã®çµ¶å¯Ÿå€ã«å¶éã§ããŸã
ãNewSize=ïŒ ããã³
-XXïŒMaxNewSize =ïŒ ã
NewSizeãš
MaxNewSizeã®å€ãåãå€ã«èšå®ããå Žåã¯ãåã«
-Xmnãªãã·ã§ã³ã䜿çšã§ããŸãã ããšãã°ã
-Xmn256m㯠-XXïŒNewSize = 256m -XXïŒMaxNewSize = 256mãšåçã§ãã
ããªãã¯ãŸã è¥ãäžä»£ã®äžã«å
¥ãããµãã€ããŒã®ãµã€ãºã«å¯Ÿãããšãã³ã®ãµã€ãºã®æ¯çã調æŽããããšãã§ããŸãã ããã¯ã
-XXãªãã·ã§ã³ã䜿çšããŠè¡ãããŸã
ïŒSurvivorRatio =ïŒ ã ããšãã°ã
SurvivorRatio = 6ã®å ŽåãåSurvivorãªãŒãžã§ã³ã¯è¥ãäžä»£å
šäœã®ãµã€ãºã®8åã®1ãå æããEdenã¯6åã®8ãå æã
ãŸã ïŒ
*æ¯çãªãã·ã§ã³èŠåãæãåºããŠãã ããïŒã
-XXïŒ-UseGCOverheadLimitãªãã·ã§ã³ã䜿çšãããšãOutOfMemoryErrorãçºçãããšãã«ãã³ã¬ã¯ã¿ã¢ã¯ãã£ããã£ã®ãããå€98ïŒ
ãç¡å¹ã«ã§ããŸãã
ãªããžã§ã¯ããSurvivorãªãŒãžã§ã³ã§ã©ã®ããã«ãšãŒãžã³ã°ããŠããããããã³ãã®ãµã€ãºã®ã©ã®ã¿ãŒã²ããå€ãçŸåšèšå®ãããŠãããã
远跡ããããšã«
èå³ãããå Žåã¯ã
-XXïŒ+ PrintTenuringDistributionãªãã·ã§ã³ã䜿çšã§ã
ãŸã ãããã¯ãããã€ãã®ã¬ãŒãããžã³ã¬ã¯ã·ã§ã³ã«é¢ããæ
å ±ã®åºåã«Survivorçµ±èšã远å ã
ãŸã ã
é·æãšçæ
ãã®ã³ã¬ã¯ã¿ãŒã®äž»ãªå©ç¹ã¯æããã§ã-ã³ã³ãã¥ãŒã¿ãŒãªãœãŒã¹ã®èгç¹ããã¯æ°åããªãã§ãã 圌ã¯ãã¹ãŠã®äœæ¥ã1ã€ã®ã¹ã¬ããã§é çªã«å®è¡ãããããé¡èãªãªãŒããŒããããæªåœ±é¿ã¯ãããŸããã

äž»ãªæ¬ ç¹ãçè§£ã§ããŸã-倧éã®ããŒã¿ãå«ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®é·ãäŒæ¢ã§ãã ããã«ããã¹ãŠã®ã·ãªã¢ã«GCèšå®ãç°ãªãããŒãé åã®ãµã€ãºãäžå¿ã«å±éããŠããããšãããããŸãã ã€ãŸãã埮調æŽãè¡ãã«ã¯ãèªåã§äœããåŠã³ãæ§æããå®éšããå¿
èŠããããŸãã ããã¯èª°ãã«ã¢ããŒã«ããªããããããŸããã
ã¢ããªã±ãŒã·ã§ã³ãæäœã®ããã«å€§ããªããŒããµã€ãºãå¿
èŠãšããªãå ŽåïŒOracleã¯
100 MBã®æ¡ä»¶ä»ãå¶éã瀺ããŸãïŒãã·ã§ãŒãã¹ãããã®åœ±é¿ãããŸãåãããæäœã«äœ¿çšã§ããããã»ããµã³ã¢ã¯1ã€ã ãã§ãããã®ãªãã·ã§ã³ã詳ãã調ã¹ãããšãã§ããŸãã ãã以å€ã®å Žåã¯ãããè¯ãæ¹æ³ã§ãªãã·ã§ã³ãæ¢ãããšãã§ããŸãã
ãã©ã¬ã«GC
ãã©ã¬ã«GCïŒãã©ã¬ã«ã³ã¬ã¯ã¿ãŒïŒã¯ãã·ãªã¢ã«ã³ã¬ã¯ã¿ãŒã«ãã£ãŠäœæãããã¢ã€ãã¢ãéçºãããããã«äžŠåæ§ãšå°ãã®ã€ã³ããªãžã§ã³ã¹ã远å ããŸãã ã³ã³ãã¥ãŒã¿ãŒã«è€æ°ã®ããã»ããµãŒã³ã¢ããããããã°ã©ã ã§äœ¿çšãããã«ããŒãæç€ºçã«æå®ããŠããªãå ŽåãJVMã¯ã»ãŒç¢ºå®ã«Parallel GCãéžæããŸãã ããã¯ååã«ã·ã³ãã«ã§ãããåæã«ã»ãšãã©ã®ã¢ããªã±ãŒã·ã§ã³ã®ããŒãºãæºããã®ã«ååæ©èœçã§ãã
䞊åã³ã¬ã¯ã¿ãŒã¯ã
-XXïŒ+ UseParallelGCãªãã·ã§ã³ã§æå¹ã«ãªã
ãŸã ã
åäœåç
䞊åã³ã¬ã¯ã¿ãŒãæ¥ç¶ããå ŽåãããŒããç·šæããããã®åãã¢ãããŒããã·ãªã¢ã«GCã®å Žåãšåãããã«äœ¿çšãããŸã-åãåçã§åäœããEdenãSurvivor 0ãSurvivor 1ãOld GenïŒç§ãã¡ã«ã¯Tenuredãšããååã§ç¥ãããŠããŸãïŒãšåãé åã«åå²ãããŸãã ãã ãããããã®é åã§ã®äœæ¥ã«ã¯2ã€ã®åºæ¬çãªéãããããŸãããŸããããã€ãã®ã¹ã¬ãããã¬ãŒããžã³ã¬ã¯ã·ã§ã³ã«äžŠè¡ããŠé¢äžããŸãã 第äºã«ããã®ã³ã¬ã¯ã¿ãŒã¯å¿
èŠãªããã©ãŒãã³ã¹ãã©ã¡ãŒã¿ãŒã«åå¥ã«é©å¿ã§ããŸãã ä»çµã¿ãèŠãŠã¿ãŸãããã
Nããã»ããµã³ã¢ã®ã³ã³ãã¥ãŒã¿ãŒã§ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã§äœ¿çšãããã¹ã¬ããã®æ°ã決å®ããããã«ãJVMã¯ããã©ã«ãã§æ¬¡ã®åŒã䜿çšããŸãïŒ
Nâ€8ã®å Žåãã¹ã¬ããã®æ°ã¯Nã§ãããã以å€ã®å Žåãã¹ã¬ããã®æ°ãååŸããããã«ãNã¯ä»ã®ä¿æ°ã«å¿ããŠä¿æ°ãä¹ç®ãããŸãéåžžã¯
5/8ã®ãã©ã¡ãŒã¿ãŒã§ãããäžéšã®ãã©ãããã©ãŒã ã§ã¯ä¿æ°ãå°ãããªãå ŽåããããŸãã
ããã©ã«ãã§ã¯ãã¹ã¢ãŒã«ãã«ããšãã«ãã«ãã®äž¡æ¹ã«ãã«ãã¹ã¬ãããå«ãŸããŸãã Smallã¯ããªããžã§ã¯ããå€ãäžä»£ã«è»¢éãããšãã«äœ¿çšãããã«-å€ãäžä»£ã®ããŒã¿ãå§çž®ãããšãã«äœ¿çšããŸãã
åã³ã¬ã¯ã¿ãŒã¹ã¬ããã¯ãOld Gené åïŒãããã
ææ Œãããã¡ãŒ ïŒã«ç¬èªã®ã¡ã¢ãªãŒãååŸããŸããããã§ã¯ãä»ã®ã¹ã¬ãããšå¹²æžããªãããã«ããŒã¿ã転éã§ããã®ã¯ããã ãã§ãã ãã®ã¢ãããŒãã¯ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãé«éåããŸãããã¡ã¢ãªã®æçåã®å¯èœæ§ãšãã圢ã§å°ããªãã€ãã¹ã®åœ±é¿ããããããŸãã

ã·ãªã¢ã«ã³ã¬ã¯ã¿ãŒãšæ¯èŒãããã©ã¬ã«ã³ã¬ã¯ã¿ãŒã®æ¹åã®ç¥çã³ã³ããŒãã³ãã¯ãå¿
èŠãªã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®å¹çãéæããããšã«çŠç¹ãåãããèšå®ãããããšã§ãã æé©ãªããã©ãŒãã³ã¹ãã©ã¡ãŒã¿ãŒïŒæå€§ãã«ãæéããã³/ãŸãã¯ã¹ã«ãŒãããïŒãæå®ã§ããŸããã³ã¬ã¯ã¿ãŒã¯ãæå®ããããããå€ãè¶
ããªãããã«æåãå°œãããŸãã ãããè¡ãããã«ã圌ã¯éå»ã®ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®çµ±èšã䜿çšããããã«åºã¥ããŠããããªãã³ã¬ã¯ã·ã§ã³ã®ãã©ã¡ãŒã¿ãèšç»ããŸããäžä»£ã®ãµã€ãºã倿ŽãããªãŒãžã§ã³ã®å²åã倿ŽããŸãã
ããšãã°ãå°èŠæš¡ãªãã«ãã§ãJVMãå²ãåœãŠãããæéã«åãŸããªãå Žåãè¥ãäžä»£ã®ãµã€ãºãå°ãããªãå¯èœæ§ããããŸãã æå®ããã垯åå¹
ãéæããããšãã§ãããé
å»¶ã«åé¡ããªãå Žåãçæãµã€ãºã¯å¢å ããŸãã ãªã©ãªã©ã
çµ±èšã¯ãæåã§éå§ããã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãç¡èŠããããšã«æ³šæããŠãã ããã
ãã¡ãããåžæãããã©ã¡ãŒã¿ãŒãéæããããšã100ïŒ
ä¿èšŒãã人ã¯ããŸãããã詊ãããšãã§ããŸããå€ãã®å Žåãå¿
èŠãªãªãã·ã§ã³ãèšå®ããã ãã§ååã§ãã
ã³ã¬ã¯ã¿ãŒãæºããããšãã§ããªã峿 ŒãªèŠä»¶ãèšå®ããå Žåãã³ã¬ã¯ã¿ãŒã¯æ¬¡ã®åªå
é äœã«åŸã£ãŠå°ãããŸãïŒéèŠåºŠã®é«ãé ïŒã
- æå€§äžæåæ¢ãæžãããŸãã
- ã¹ã«ãŒãããã®åäžã
- ã¡ã¢ãªäœ¿çšéãæå°éã«æããŸãã
åæã«ãParallel GCã§ã¯ãã·ãªã¢ã«ã³ã¬ã¯ã¿ãŒã®ããã«ããªãŒãžã§ã³ã®ãµã€ãºãåå¥ã«èª¿æŽããããšãã§ããŸãã ãã ããèªåãã¥ãŒãã³ã°ã¢ã«ãŽãªãºã ãæ··ä¹±ãããªãããã«ãäž¡æ¹ãåæã«è¡ãããšã¯ãå§ãããŸããã ã¢ããªã±ãŒã·ã§ã³ã«ååãªã¡ã¢ãªãå²ãåœãŠãç®çã®ããã©ãŒãã³ã¹ãã©ã¡ãŒã¿ãŒãæå®ããŠå€éšãã芳å¯ããããå°åèšå®ã«èªåèªèº«ã§ç»ããŸãããã³ã¬ã¯ã¿ãŒãå¿
èŠãªããã©ãŒãã³ã¹åºæºã«èªåçã«èª¿æŽããããšãèŠæ±ããæš©å©ã倱ããŸãã ãã®èŠåã«éåããå Žåã圌ã¯ç§ãã¡ãèªãããšã¯ãããŸãããã圌ã¯ä»äºã广çã«éè¡ããããšãã§ããŸããã
STWã®ç¶æ³
ã·ãªã¢ã«ã³ã¬ã¯ã¿ãŒã®å Žåã®ããã«ãã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãŠã®ã¡ã€ã³ã¹ã¬ããã¯ãã¡ã¢ãªã¯ãªãŒãã³ã°æäœäžã«åæ¢ãããŸãã å¯äžã®éãã¯ãäœæ¥ã®äžéšã䞊è¡ããŠå®è¡ããããããäžæåæ¢ãéåžžçããªãããšã§ãã
ã«ã¹ã¿ãã€ãº
ãã©ã¬ã«ã³ã¬ã¯ã¿ã®å Žåãã·ãªã¢ã«ãªãã·ã§ã³ãšåããªãã·ã§ã³ããã¹ãŠé©çšãããŸãã ã¡ã¢ãªé åã®ãµã€ãºãŸãã¯ã¡ã¢ãªé åéã®æ¯çãæåã§èšå®ã§ããŸãã ãã©ã¬ã«ã³ã¬ã¯ã¿ãŒã«ãã£ãŠäžèšã§æ¢ã«èª¬æãããã®ã«è¿œå ããããªãã·ã§ã³ã以äžã«ãªã¹ãããŸãã
ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã«å²ãåœãŠãã¹ã¬ããã®æ°ãæåã§æå®ã§ããŸãã ããã¯ã
-XXãªãã·ã§ã³ã䜿çšããŠè¡ãããŸã
ïŒParallelGCThreads =ïŒ ã ããšãã°ã
-XXïŒParallelGCThreads = 9㯠ãã¹ã¬ããæ°ã
9ã«å¶éããŸãã ã¹ã¬ããã®æ°ãå¢ãããšãã¢ã»ã³ããªããã匷åã«äžŠååãããã ãã§ãªããTenuredé åã®æçåãå¢ãããããã®ã¹ã¬ãããåæãããªãŒããŒãããã远å ãããããšã«æ³šæããŠãã ããã
å¿
èŠã«å¿ããŠã
-XXïŒ-UseParallelOldGCãªãã·ã§ã³ã䜿çšããŠãå€ãäžä»£ã®ãªããžã§ã¯ããå§çž®ãã䞊åäœæ¥ãå®å
šã«ç¡å¹ã«ããããšãã§ã
ãŸã ã
ã³ã¬ã¯ã¿ãŒã®ç®çã®ããã©ãŒãã³ã¹ãã©ã¡ãŒã¿ãŒã®èšå®ã¯ã
-XXãªãã·ã§ã³ã䜿çšããŠå®è¡ãããŸã
ãMaxGCPauseMillis =ïŒ ããã³
-XXïŒGCTimeRatio =ïŒ ã
MaxGCPauseMillisã¯ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ããã°ã©ã ã®æå€§äžæåæ¢æéã«å¶éãèšå®ããŸãã ããšãã°ã
-XXïŒMaxGCPauseMillis = 400ã¯JVMã«ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®äžæåæ¢ã400ããªç§ããé·ã
å»¶ã°ããªãããšããå§ãããŸãã ããã©ã«ãã§ã¯ããã®ãããªå¶éã¯ãããŸããã ãã®ãã©ã¡ãŒã¿ãŒãèšå®ããå Žåãã¢ã»ã³ããªæéã®å¶éã«ãããããé »ç¹ã«å®è¡ããå¿
èŠãããããã®çµæãå
šäœã®ã¹ã«ãŒããããäœäžããå¯èœæ§ãããããšã«æ³šæããŠãã ããã
GCTimeRatioãªãã·ã§ã³ã䜿çšãããšãç®çã®åž¯åå¹
ã®ãããå€ïŒããã°ã©ã ã®å®è¡æéãšã¬ããŒãžã³ã¬ã¯ã·ã§ã³æéã®æ¯çïŒãæå®ã§ããŸãã ããšãã°ã
-XXïŒGCTimeRatio = 49ã®å Žåã JVMã¯ããã°ã©ã ã®æéã®2ïŒ
ãè¶
ããªãããã«ãã«ãããããšããŸãïŒãã«ãæéãšããã°ã©ã æéã®æ¯ã¯
1 /ïŒ1 + 49ïŒã«ãªããŸãïŒ ã
ãªãã·ã§ã³
-XXïŒYoungGenerationSizeIncrement =ïŒ ããã³
-XXïŒTenuredGenerationSizeIncrement =ïŒ å¿
èŠã«å¿ããŠãè¥ãäžä»£ãšå€ãäžä»£ãããããã©ãã ãå¢ããããèšå®ããŸãã ããã©ã«ãã§ã¯ããããã®ãªãã·ã§ã³ã¯äž¡æ¹ãšã20ã§ãã
ãã ããäžä»£ã®ãµã€ãºãçž®å°ããé床ã¯ãããŒã»ã³ããŒãžã§ã¯ãªãã
-XXãªãã·ã§ã³ã®
AdaptiveSizeDecrementScaleFactorã«ããç¹å¥ãªèŠå ã«ãã£ãŠèŠå¶ãããŸãã æžå°ãå¢å ãããå°ãªãåæ°ã瀺ããŸãã ãã®ãªãã·ã§ã³ã¯äž¡æ¹ã®äžä»£ã«é©çšãããŸãã ããšãã°ã
-XXïŒAdaptiveSizeDecrementScaleFactor = 2ã®å Žå ãäžä»£ã®æžå°ã¯ããããå¢å ã®2åã«ãªããŸãïŒã€ãŸãã
-XXïŒGenerationSizeIncrement = 20ããã³
-XXïŒTenuredGenerationSizeIncrement = 20ã®å Žåãäž¡æ¹ã®äžä»£ã10ïŒ
æžå°ã
ãŸã ïŒã
é·æãšçæ
ã·ãªã¢ã«GCã®èæ¯ã«å¯Ÿãããã®ã³ã¬ã¯ã¿ãŒã®çŽãããªãå©ç¹ã¯ãå¿
èŠãªããã©ãŒãã³ã¹ãã©ã¡ãŒã¿ãŒã«èªåçã«èª¿æŽããæ©èœãšãã¢ã»ã³ããªäžã®çãäŒæ¢æéã§ãã è€æ°ã®ããã»ããµã³ã¢ãããå Žåãã»ãšãã©ãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã§é床ãåäžããŸãã
ãã¡ãããã¡ã¢ãªã®ç¹å®ã®æçåã¯ãã€ãã¹ã§ãããã³ã¬ã¯ã¿ãŒãæ¯èŒçå°æ°ã®ã¹ã¬ããã䜿çšãããããã»ãšãã©ã®ã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠéèŠã§ã¯ãããŸããã
å
šäœãšããŠãParallel GCã¯ãã»ãšãã©ã®ã¢ããªã±ãŒã·ã§ã³ã«é©ãããã·ã³ãã«ã§çŽæçã§å¹ççãªãã«ããŒã§ãã é ãããªãŒããŒãããã³ã¹ãã¯ãããŸãããèšå®ããã€ã§ã倿Žã§ãããããã®å€æŽã®çµæãæç¢ºã«ç¢ºèªã§ããŸãã
ããããããã ãã§ã¯äžååã§ãããããæŽç·Žããããã®ãæ¢ãå¿
èŠããããŸãã æ¬¡ã®èšäºã§ã¯ãã³ã¬ã¯ã¿ãŒã®ããé«åºŠãªå®è£
ã«ã€ããŠèª¬æããŸãã
ããŒã3-CMS GCããã³G1 GCã³ã¬ã¯ã¿ãŒâæ©ãâããŒã1-ã¯ããã«