diff --git "a/Java351円235円242円350円257円225円351円242円230円351円233円206円347円273円223円345円217円267円/JVM 347円257円207円/JVM351円235円242円350円257円225円351円242円230円.md" "b/Java351円235円242円350円257円225円351円242円230円351円233円206円347円273円223円345円217円267円/JVM 347円257円207円/JVM351円235円242円350円257円225円351円242円230円.md" index 5bda042..2eef813 100644 --- "a/Java351円235円242円350円257円225円351円242円230円351円233円206円347円273円223円345円217円267円/JVM 347円257円207円/JVM351円235円242円350円257円225円351円242円230円.md" +++ "b/Java351円235円242円350円257円225円351円242円230円351円233円206円347円273円223円345円217円267円/JVM 347円257円207円/JVM351円235円242円350円257円225円351円242円230円.md" @@ -1,52 +1,717 @@ -### JVM 鐙 -1. 焚担秤趨和氏窟伏媚坪贋吝竃。焚担扮昨窟伏均吝竃?低頁奕担電危議? -2. JVM奕担登僅斤嵆頁辛指辺斤嵆?嗤陳乂圭隈。 -3. JVM議坪贋潤更?仟伏旗嚥析定旗議曳箭?Eden才Survivor曳箭。 -4. 低岑祇陳叱嶽征侍辺鹿匂?光徭議單髪泣?嶷泣讐和cms才G1?淫凄圻尖?送殻?單髪泣。 -5. 酒汽傍傍低阻盾議窃紗墮匂?辛參嬉篤褒牌溜塗担?奕担嬉篤。 -6. JVM坪贋葎焚担勣蛍撹仟伏旗?析定旗?隔消旗。仟伏旗嶄葎焚担勣蛍葎Eden才Survivor。 -7. JVM 竃孖 fullGC 載撞訓?奕担肇?貧電臥諒籾? -8. JVM嶄匯肝頼屁議GC送殻頁奕劔議?斤嵆泌採恕幅欺析定旗?傍傍低岑祇議叱嶽麼勣議JVM歌方。 -9. 征侍指辺麻隈議糞孖圻尖。 -10. JVM坪贋庁侏議屢購岑紛阻盾謹富?曳泌嶷電會?坪贋徳嬾?happen-before?麼坪贋?垢恬坪贋吉。 -11. 傍匯和Java斤嵆議幹秀狛殻 -12. 低断?貧哘喘議JVM歌方塘崔阻陳乂。 -13. G1才cms曝艶。 -14. 奕担嬉竃?殻媚佚連。 -15. 傍匯和窃紗墮議峇佩狛殻 -16. JVM征侍指辺字崙?採扮乾窟MinorGC吉荷恬椿? -17. ZGC 征侍辺鹿匂?阻盾狛宅 -18. 斤嵆議恵諒協了嗤陳曾嶽圭塀? -19. 傍匯和 jvm 距單議垢醤? -20. 斤嵆焚担扮昨氏序秘析定旗? -21. 坪贋亶息才坪贋吝竃曝艶? -22. 焚担頁tomcat窃紗墮字崙? -23. 阻盾毛叺蛍裂室宝宅 -24. 距喘System.gc()氏窟伏焚担? -25. 霧霧Minor GC訳周?full GC訳周 -26. Stop The World 阻盾狛宅? -27. 霧霧低範紛謹富嶽OOM?泌採閲窒OOM? -28. 阻盾狛JVM距單短?児云房揃頁焚担?泌採鳩協万断議寄弌椿? -29. 猛右犯壇斌瞳佚連壓JVM陳倖坪贋曝囃 -30. 忖准鷹議園咎狛殻 -31. Java俶勣蝕窟繁埀指辺坪贋征侍宅? -32. Java嶄征侍指辺嗤焚担朕議?焚担扮昨序佩征侍指辺? -33. System.gc()才Runtime.gc()氏恂焚担並秤? -34. 麼坪贋嚥垢恬坪贋 -35. 坪贋寂住札荷恬 -36. volatile 鋤峭坪贋嶷電會 -37. 坪贋庁侏眉寄蒙來 -38. 霧霧枠佩窟伏圻夸 -39. JVM 均坪贋吝竃朔?凪麿?殻頁倦辛写偬垢恬? -40. 傍匯和JVM 械喘歌方嗤陳乂? -41. VM 葎焚担聞喘圷腎寂紋算阻喟消旗? -42. Java均議潤更頁焚担劔徨議?焚担頁均嶄議喟消旗(Perm Gen space)? -43. JVM議喟消旗嶄氏窟伏征侍指辺担? -44. 焚担頁忖准鷹?寡喘忖准鷹議恷寄挫侃頁焚担?焚担Java頁倡亭字? -45. MinorGC 議狛殻 -46. CPU 媼喘狛互泌採蛍裂 -47. Serial嚥Parallel GC岻寂議音揖岻侃? -48. WeakHashMap 頁奕担垢恬議? -49. 盾瞥 Java 均腎寂式 GC? -50. 低嬬隠屬 GC 峇佩宅? -51. JVM嶄陳倖歌方頁喘栖陣崙?殻議媚均媚弌議? +### JVM 膀? +1. 篁?箙??????灸??篌?????????????絖?羣√?冴??篁?箙???九???????????羣√?削??篏???壩??箙??????????鐚? + 膈?鐚???????絖?羣√?咲??絽後????????篁ヤ???????居?? + * ???綵?莪??????羞縁??羃≧??罩g`膸?罩∽?>散鐚?絲取?贋??絽т????上????ユ????????腥咲?頑??絨純?? + * 絮?????????颷?紊????菴?紊э?????筝??号??莪??????倶??絽ц??菴????絎拷???????吟?? + * 膾睡?????綮肴??紊?鐚?罸鋇?鎖腮???醇????ス????????腥咲?器????紙??腥咲?頑??絨純?? + ???羣√?咲??絽後???????Ǎ?? + * 腮?綺???活噯??????絖???脂?顥?菴?篋?JVM?????????紊у俉????-Xmx莅丞舟鐚???? + * ??????篋????絖?羈?羲??Memory Leak鐚?鐚?絲壕院筝????茴?戎???篏?篁???区←綣???Ǎ??絲取?翫櫜?????腥咲?顔??羝????絨純?? + ????????号??鐚? + * **???羣√??**鐚? + * 篏睡??JVM?????? `-XX:+PrintStackTrace` ?????医?阪????雁??綣?絽後?????篆≧?姒??絎?篏???医?隙?????篁g??茵???? + * 罍???ラ??綵???肢??鐚?隋勌?????膸?罩∽?>散??? + * 罍???ユ?号?????絮????????????育?????紊у????? + * 莪????JVM???紊у???????? `-Xss`鐚?篏????絽娯????奝?????鐚?綺????篌????篁g??鐚???? + * **???羣√??**鐚? + * ????キ `OutOfMemoryError` 綣?絽醐?????綣?絽後?????筝? dump ???莉サ?????篁駈??Heap Dump鐚?鐚?絽悟???????? `-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/dump.hprof`??? + * 篏睡????????綏ュ?件??絋?VisualVM, Eclipse MAT, JProfiler, YourKit鐚????莉?Heap Dump???篁駈???????????絖????????????居????ユ?上??絖?羈?羲???刻??絋???ŭ??絲壕院??????紊ч?????絖?鐚???ŭ??GC Roots綣????篋?絎?篁ロ????? + * ??????GC??ュ??鐚?`-Xlog:gc*=info`鐚?鐚?茹?絲????絖?紜???粋????水??Full GC?????居????ゆ?中????絖?羈?羲颷??????紊у?顒丞舟筝?綵???? +2. JVM???箙???ゆ?上噲莟≧??櫔????九噲莟\???????ŭ????号????? + 膈?鐚?JVM筝肢?????菴?篁ヤ??筝ょ????号????ゆ?上噲莟≧????櫔????駈?? + * **綣?????≧?井??鐚?Reference Counting鐚?**鐚?筝堺?鋇?噲莟≦?????筝?筝???????≧?医?????綵????筝?筝??井?劫?????絎???駈??莅≧?医?????1鐚?綣????紊掩????駈??莅≧?医?????1???篁私????九?肢?≧?医??筝?0???絲壕院絨掩?壚???櫝?遵??茴?戎?????鐚??櫆札茴??????吟??膽榊?号?奝?鞘札茹e?喝噲莟♂?雁??緇?ッ綣?????勰????? + * **?櫝松??у?????膊?羈?鐚?Reachability Analysis / Tracing Algorithm鐚?**鐚?菴???夌????筝紙???????ゆ?中?号????????菴?筝?膤糸??腱遺減???GC Roots??????絲壕院篏?筝肴儀??刻?????筝????膣???絋????筝?筝?噲莟≦??GC Roots羃≧??篁私??綣?????丞?梧??鐚???割??GC Roots??域唫絲壕院筝??櫝松鐚?鐚????莚????莚ュ噲莟≧?壚???櫜????鐚??櫆札茴??????吟???櫆札篏?筝?GC Roots???絲壕院?????ロ??????????堺??鐚????絽т賢?????サ?医????頫Ǎ??筝上???????絲壕院?????号????坂賢膠脂?????絮???у???????絲壕院?????号????坂賢絽檎?鏁??????絲壕院?????サ?井?号?????筝?JNI鐚?Native??号??鐚?綣??????絲壕院膈???? +3. JVM??????絖?膸????鐚???亥??篁d?????綛岩撮???罸?箴?鐚?Eden???Survivor罸?箴???? + 膈?鐚?JVM???絖?膸????鐚?篁?HotSpot筝坂??鐚?筝肢?????筝削?? + * **???鐚?Heap鐚?**鐚????箙??????????絲壕院絎?箴???遵????????????????絖?鐚????GC???筝肢????阪??鐚??櫜?????筝堺?亥??篁e?????綛岩撮??? + * **???鐚?Stack鐚?**鐚?罸鋇?鎖腮????綮堺?狗?巡????????筝?筝????????????鐚????篋?絖????絮????????????????篏???井?????????????丈・?????号????阪???篆≧?壔????????絖???夌鎖腮?腱?????????? + * **腮?綺顒≧?医?Ǎ??Program Counter Register鐚?**鐚????腓阪?????膾睡????ц?????絖??????????篁ゅ?医??鐚?箙???夌鎖腮?腱?????????? + * **??サ?井?号?????鐚?Native Method Stack鐚?**鐚?筝?JVM篏睡????亥??Native??号???????\??箙???夌鎖腮?腱?????????? + * **??号????削??Method Area鐚?/???腥咲?器??Metaspace鐚?**鐚?絖????綏画←????????阪??莉順??膠私拭??壔??絽檎??????????????????????恰?句??莚??????莚???????篁g??膈???井?勉?????JDK 7???箙??????壩宛箙?篁o??PermGen鐚?鐚?JDK 8???箙??????剛減???腥咲?器??Metaspace鐚?鐚????腥咲?岩戎?????サ?医??絖???? + ??亥??篁d?????綛岩撮???罸?箴?鐚?藥?莅ゆ?? **1:2**鐚???恰?亥??篁e????????絖????1/3鐚????綛岩撮???2/3????櫆札???菴? `-XX:NewRatio` ?????域????器??箴?絋? `-XX:NewRatio=2` 茵?ず???綛岩撮:??亥??篁?=2:1鐚???? + Eden???Survivor罸?箴?鐚???亥??篁e???????????筝坂??筝?Eden腥咲?翫??筝や肩Survivor腥咲?器??From???To鐚????藥?莅ゆ??箴???? **Eden : Survivor = 8 : 1 : 1**????櫆札???菴? `-XX:SurvivorRatio` ?????域????器??箴?絋? `-XX:SurvivorRatio=8` 茵?ずEden:Survivor=8:1鐚???? +4. 篏???ラ???????腱??????丈?狗????Ǎ??????????篌?膽榊?刻???????壕佪筝?cms???G1鐚??????サ?????鐚?羌?腮?鐚?篌?膽榊?鴻?? + 膈?鐚?絽梧??????????丈?狗????????鐚? + * **Serial GC**鐚????膾睡????狗????Ǎ??菴?茵??????上????倶?九??蕁紙????????????????欠鎖腮?鐚?Stop The World, STW鐚????篌???号?夌?????蕭????鐚??????????CPU筝?鐚?鐚????絖?綣????絨????膽榊?号??STW??狗?顔?随??筝????????????≦??ッ紜???? + * **ParNew GC**鐚?Serial GC???紊?膾睡???????ロ??篏睡??紊?筝?GC膾睡??綛区???????吟????虁侮紊?Server罔≦?鋇????薤??????亥??篁f?狗????Ǎ???櫆札筝?CMS??????篏睡?????篌???号??攻茵??????駈????鎞?STW??狗?眼??膽榊?号?壚????倶?夌?サ??綣??????駈??筝????荀?紊????CPU??壩????? + * **Parallel Scavenge GC**鐚???亥??篁f?狗????Ǎ??篏睡??紊???句??羈?鐚?菴醇??蕭???????????Throughput = ?????隙撮???菴?茵???狗?? / (?????隙撮???菴?茵???狗?? + GC??狗??)鐚?????櫆札???菴? `-XX:MaxGCPauseMillis` 莅丞舟???紊ф???????狗?雁?勖??鐚?篏????????????????篌???号?????????駜????膽榊?号??STW??狗?翫櫝?処????随?????羈?膕丞`?ァ??倶???????狗?眼?? + * **Serial Old GC**鐚?Serial GC??????綛岩撮?????ロ??篏睡?????莅?-??雁??膊?羈???????篋?Client罔≦?????Parallel Scavenge??????紊???号????? + * **Parallel Old GC**鐚?Parallel Scavenge??????綛岩撮?????ロ??篏睡?????莅?-??雁??膊?羈????篌???号?奝????????????筝????綛岩撮?????銀????遵攻茵????膽榊?号??STW??狗?翫櫝?処????帥?? + * **CMS鐚?Concurrent Mark Sweep鐚?GC**鐚? + * **??????**鐚?筝?腱?篁ヨキ????????上????九??蕁炊?狗?岩減??勖???????狗????Ǎ????坂????????莅?-羝???も??膊?羈?絎??ー???筝肢??篌???号??攻??????莅医??綛九??羝???わ??紊ч?????綏ヤ??筝???糸???????欠鎖腮???? + * **羌?腮?**鐚? + 1. **???紮????莅逸??Initial Mark鐚?**鐚?STW鐚????莅?GC Roots??順?贋・??活????亥??絲壕院??????綺???綽??? + 2. **綛九?????莅逸??Concurrent Mark鐚?**鐚????????欠鎖腮?膸х鮫菴?茵?????????駈??篁?GC Roots綣?紮?????????岩肩絲壕院??常?????莅井??????櫝松絲壕院????????区????推??筝????荀?STW??? + 3. **?????井??莅逸??Remark鐚?**鐚?STW鐚?篆勖3綛九?????莅井????翫???????欠鎖腮?膸х鮫菴?茵????絲取?贋??莅遺婚?????????????i?????絲壕院??????莅域佖綵????菴?筝??倶侊???蕁炊?狗?贋?????紮????莅育?随??篏?菴?罸?綛九?????莅亥?KK?? + 4. **綛九??羝???わ??Concurrent Sweep鐚?**鐚????????欠鎖腮?膸х鮫菴?茵?????????駈??羝???ゆ?????←???莅逸??筝??櫝松鐚????絲壕院?????延????壎?????莅?-羝???も??膊?羈?鐚?篌?篋х?????絖?腆??????? + * **篌?膽榊??**鐚? + * 篌???刻??綛九????狗??鐚?篏????蕁帥?? + * 膽榊?刻??絲?CPU莎?羣???????鐚?綛九????倶侊??順?銀?????????????欠鎖腮?鐚?篏?篌???????CPU莎?羣?綵怨??綺??????ц?緒??鐚????羈?紊???????羌????????鐘??鐚?綛九?????莅医??羝???ゆ????雁????欠鎖腮?篋х??????????常???Ű?順????遺??筝?罨?GC鐚?鐚????絖?腆??????勰??鐚??櫝?遵嚩??翫ぇ絲壕院????????狗??荀?茹???Full GC鐚???? + * **G1鐚?Garbage-First鐚?GC**鐚? + * **??????**鐚?筝?罨冗?√???????≦?????????丈?狗????Ǎ??筝肢?????絲劫??紊??????????紊у??絖??????阪?Ǎ??????????????蕁炊?狗?翫???キ緇?蕭?????????????絎?絨???岩肩?????????筝阪??筝?ぇ絨???悟???????ス????阪??鐚?Region鐚?鐚?罸鋇?Region??遵櫆札??勖??Eden???Survivor???Old???茹???蚊??絎?莊?荼???筝?Region????????鞘桟??種???????倶???キ緇????腥咲?翫ぇ絨鋌ュ???????倶???????狗?雁??膸駚???種??鐚????????佂惨??や??筝ŭ????????茵Ǎ??罸閩≧?号????莅悟?????蕁炊?狗?器??篌?????????銀桟??惹??紊х??Region??? + * **羌?腮?**鐚? + 1. **???紮????莅逸??Initial Mark鐚?**鐚?STW鐚?筝?CMS??????紮????莅亥瓜篌種?????莅?GC Roots??贋・??活?????絲壕院鐚?篏??櫆札??ñ??Remark??倶?狗?????綣????篆≧?壔?? + 2. **綛九?????莅逸??Concurrent Mark鐚?**鐚?筝?CMS膠私室鐚???????絲壕院??常?????莅井??????櫝松絲壕院鐚?綛区?∞?????筝?Region????????銀桟??若?? + 3. **???膸????莅逸??Final Mark鐚?**鐚?STW鐚?紊????綛九?????莅井????翫噲莟≦???????括鎧?????????????????? + 4. **膈?????????駈??Cleanup鐚?**鐚?STW鐚???号??攻??????莅亥??膸????鐚?膈??????阪????銀桟??守?????筝?蘂?莅≦??蕁炊?狗?贋察莇活??羆????Region??????鐚?菴?茵??????吟???????倶?駈??絨?Region筝上??羇紫??絲壕院紊???九?亥Ã???Region筝昭和??綛倶????よ←??????Region???腥咲?眼??菴?筝???腮?篌???雁?????絖?鐚???鎞?腆??????? + * **篌?膽榊??**鐚? + * 篌???刻??????羌???????蕁炊?狗?器?????菴? `-XX:MaxGCPauseMillis` 莅丞舟??勖??鐚?鐚?蕭?????????????遵???????ñ??紊?CPU篌???随????????茹e?喝??絖?腆??????勰??鐚??櫐?ï????уソ鐚???????篋?紊у??絖?鐚???? + * 膽榊?刻????後噲紊????鐚????絖?????????蕭?鐚????荀?膸贋?ゆ?井?勛?????鐚?鐚????Region??育?颴?絨????絲壕院紊у?????絽?筝??????九櫝?巡??絋?CMS??? +5. 膊????莚頑?篏?篋?茹g??膠糸??莉遵?Ǎ???櫆札?????翫??篋峨??羇鞘??鐚????箙??????眼?? + 膈?鐚?膠糸??莉遵????茣e??膠紫??絖??????????篁駈??.class鐚????莉遵??JVM筝昭和??綛句?????絲劫?????Class絲壕院???絽梧?????膠糸??莉遵?????鐚? + * **?????瓜???莉遵?Ǎ??Bootstrap ClassLoader鐚?**鐚?茣?茣e??莉? `/lib` ?????筝????茴? `-Xbootclasspath` ?????井??絎??????後??膠糸??鐚?絋?rt.jar鐚????絎????C/C++絎??ー???鐚?Java腮?綺????羈???贋・?キ?????九???????? + * **??ï??膠糸??莉遵?Ǎ??Extension ClassLoader鐚?**鐚?茣?茣e??莉? `/lib/ext` ?????筝????茴? `java.ext.dirs` 膤紫???????????絎??????ï??膠糸????? + * **綺??????綺靏糸??莉遵?Ǎ??Application ClassLoader / System ClassLoader鐚?**鐚?茣?茣e??莉? `CLASSPATH` ?ッ紜?????????? `-classpath` ???絎????膠肢君緇?筝????膠祉??絎???壩??篁ス????????紊у????医???????綺????藥?莅ょ瓜???莉遵????? + * **?????箙?膠糸??莉遵??**鐚?膸ф?? `java.lang.ClassLoader` 綛狗????? `findClass`鐚???? `loadClass`鐚???号??絎??ー??? + **???篋峨??羇丈─???鐚?Parent Delegation Model鐚?**鐚?綏ヤ??羌?腮???姒??絋????筝?筝?瓜???莉遵????九?遺?????莉順瓜???莚傑??鐚?絎?薤????筝?篌????訓絨?莚????莉緒??????????莚傑??紮?羇丞??絎??????句瓜???莉遵??????Ŭ??綵???句瓜???莉遵?????薤????訓???羈?絎???????莉巡算??≧?駈??絋???句瓜???莉遵??筝TEL??絖????唫膠誌??鐚?絖?膠糸??莉遵?????篌?絨?莚????訓?サ???莉純?? + **?????翫??篋峨??羇?**鐚??櫆札?????器??篏????荀???????綛臥?????絽梧???????号?????鐚? + * **?????? `loadClass` ??号??**鐚????????箙?膠糸??莉遵??筝昭和??筝???球妾???篋峨??羇丞????肢??鐚???贋・莪???? `findClass` ??号??菴?茵????莉純?? + * **?????? `findClass` ??号??**鐚?菴???壩?贋ィ????????劫????????????箙?膠糸??莉遵???? `findClass` ??号??筝上???ー???訓??????莉初?肢??鐚?絋?篁?臀?膸??????井????膈??????????篏?臀???莉緒??鐚?綛句`篆??????鞘????亥瓜??倶????? `ClassNotFoundException`鐚?菴???決??????鞘???????銀?????莉遵?Ǎ???????ス?九??莉遵?Ǎ??菴??????坂??絨?莚????莉純?? + * **篏睡?? `ClassLoader#loadClass(String, boolean)` ??? `resolve` ??????**鐚???順?銀????贋・?????贋─???鐚?篏??櫆札?ァ??倶????В???膠祉?? + * **膾睡??筝?筝????膠糸??莉遵?Ǎ??Thread Context ClassLoader鐚?**鐚????菴? `Thread.setContextClassLoader()` 莅丞舟鐚??櫆札???瓜???莉初?乗君筝中????ヤ??筝ŭ???????????莉遵?????箴?絋?鐚?JNDI?????>戎???絎???ュ??莉処??羣?鐚??????岩??SPI鐚?Service Provider Interface鐚???堺?壚??藥?莅ょ?????篋峨??羇冗????吟?? +6. JVM???絖?筝坂??箙?荀?????????亥??篁o?????綛岩撮鐚????箙?篁c????亥??篁d賢筝坂??箙?荀????筝?Eden???Survivor??? + 膈?鐚? + * **筝坂??箙??????亥??篁e?????綛岩撮**鐚? + * **絲壕院?????遵?????綏???**鐚?紊у????医噲莟≦?????綮阪??緇?綽?絨延?????緇?筝??櫝松鐚???上?遵噲莟\??鐚??Ŭ??絨???鎛壕院篌?絖?羇糸????炊?狗?器????水?遵噲莟\????????篁f?狗???櫆札???絲剛??????????遵????????絲壕院??????筝????????????句????ワ?????蕭?????????? + * **?????倶?????**鐚???亥??篁e噲莟≦??綺???鐚?緇?紊????????常??鐚???????篏睡??紊???句??羈?鐚?Copying鐚?鐚????綺?辱??????綛岩撮絲壕院絲?綺???鐚?紊ч???????壩柑絲壕院鐚?鐚???????篏睡?????莅?-羝???わ??Mark-Sweep鐚???????莅?-??雁??鐚?Mark-Compact鐚?膊?羈?鐚???鎞????絖?羌?換??? + * **??鎞?Full GC蘂????**鐚?絨???水?遵噲莟∞Щ??域??綛岩撮鐚??櫆札??鎞?絎?篁セ←蘂?膵???????????????句??綣????鐚????篏?Full GC???蘂??????? + * **筝坂??箙???亥??篁e??Eden???Survivor**鐚? + * **紊???句??羈????絎??ー**鐚???亥??篁d源荀?篏睡??紊???句??羈????絨???亥??篁e??筝?Eden???筝ゅ??紊у????後?????Survivor腥咲?器??罸閩≦?????絲壕院??狗?遵??Eden??肴??茵????綵?Eden??堺察??区Е???Minor GC鐚?絨?Eden???筝????Survivor筝上??羇紫??絲壕院紊???九?医Ί?????腥榊??Survivor筝昭和??綛倶????????Eden??????Survivor???絖?羇紫??絲壕院綛顔??紜????鐚?莨上?遺??絎?綛顔??鐚?藥?莅?15鐚???? `-XX:MaxTenuringThreshold` ?ァ??駈?????絲壕院篌?茴?????????域??綛岩撮??? + * **腥咲?贋?????**鐚?篁私????九????巡??莚????筝????Survivor??夌Ã???鐚?篏?筝坂??罨?GC??句??紊???句?勖??鐚???水??篋?蘂?膵???????絖????????????雁????????莅坂???Ŭ??10%???腥咲?頑←???羌?換???鐚????筝?Survivor??阪????亥??篁g??1/10鐚?鐚?篏???初?????紊????紊ч????上?遵噲莟∞?????綮阪???????吟?? + * **絲壕院綛顔??膊∞??**鐚?Survivor??阪櫆札?????ヨ佖綵?絲壕院???絖?羇紙?狗?器??筝阪噲莟≧???????域??綛岩撮???箴?箴???勉?? +7. JVM ??榊ー fullGC 緇?蘂?膵?鐚????箙??サ膾推???????ラ?勰??鐚? + 膈?鐚??????ラ??膵?Full GC???罩ラĽ鐚? + * **??狗??GC??ュ??**鐚?隋勌??JVM綣???壚??GC??ュ???????緒??箴?絋?鐚?`-Xlog:gc*=info:file=/path/to/gc.log:time,uptime,level,tags`?????ュ?????篁区佖綵?篋?罸閩?GC???膠糸??????????吟????????絖???????膈?篆≧?壔?? + * **??????GC??ュ??**鐚?篏睡??綏ュ?件??絋? `jcmd GC.print_heap_at_gc`, `jstat -gcutil `, ???筝????????ュ????????綏ュ?桁??GCEasy, GCViewer鐚?????????ュ????? + * ??ョ??Full GC???茹?????????鐚???虁??綛岩撮腥咲?岩??莇鰹??羂娯??篁?/???腥咲?雁Ã??岩??莇鰹??菴????System.gc()茴?????Ǎ????????CMS???Concurrent Mode Failure鐚?綛九??罔≦?鎀沿乾鐚????Promotion Failed鐚???????紊沿乾鐚?鐚? + * 茹?絲????綛岩撮?????亥??篁c??羂娯??篁?/???腥咲?雁??篏睡??????随????ゆ?中???ŭ肩??阪??絲取?雁????勰????? + * 莅∞??Full GC???綛喝????顔????狗?翫???????駈??莚?篌医襲?????? + * **??????Heap Dump**鐚????Full GC????????倶??箙????鐚?篏睡?? `-XX:+HeapDumpOnOutOfMemoryError` ?????????篏睡?? `jmap -dump:live,format=b,file=heap.hprof ` ?????????莉サ??綽??с?? + * **??????Heap Dump**鐚?篏睡??MAT鐚?Eclipse Memory Analyzer Tool鐚????VisualVM???JProfiler膈?綏ュ?桁??莉?Heap Dump??? + * ??ユ?上??絖?羈?羲?????菴?Dominator Tree??? Leak Suspects ??ュ??鐚???上?阪????????絖????紊????絲壕院?????九??????常????ゆ?中??????絲壕院??サ??茴??????銀??茴??炊????????綣??????? + * 罍???ュぇ絲壕院鐚???ユ?上?????Ã??雁?劫??紊х??絲壕院鐚???ゆ?中?????壩3絽娯????♂??羆?菴??????絽娯婚?????? + * 罍???ョ鎖腮????鐚??????句鎖腮???炊?狗?贋???????????紊?篋????腱???倶??箙?篌???贋・絲取?翫??絖???勰????? + * **罍???ヤ撮?????????臀?**鐚? + * 篁g??絮??????罍???ユ??????????????????膠脂?炊????????絲壕院綣???????紊у噲莟≦??綮阪?????????障??膽?絖???阪?区倘莅>???????????膾睡??羈?羲靁???勰????? + * ???臀????????罍???ュ?????絖?紊у??? `-Xms`, `-Xmx`鐚??????倘臀勤??絨?????綛岩撮?????亥??篁f??箴???????????鐚?Survivor??堺??箴???????????鐚?GC膊?羈??????ð?????????綵????綺??????堺?姒?????腥咲?翫ぇ絨?? `-XX:MetaspaceSize`, `-XX:MaxMetaspaceSize`鐚??????恭紊???? + * **????ァ??????**鐚?膸????膤紫??????ァ鐚?絋?CPU??????絖????膾睡????逸?????綺???????ァ鐚?絋?莚傑???????????綺???狗?器??鐚????Full GC?????????劫?????篏????蕭?絣井????後?潟?? +8. JVM筝TEL??罨≦????雁??GC羌?腮???壩????欠??鐚?絲壕院絋?篏?????????域??綛岩撮鐚?莚頑?篏???ラ????????腱?筝肢?????JVM?????違?? + 膈?鐚? + * **筝?罨≦????雁??GC羌?腮?**鐚????絽御??篁?Minor GC??医櫝?処Е???Full GC???菴?腮???? + 1. **Minor GC**鐚??????亥??篁gÃ??器??筝肢?????Eden??削??羯≧?区Е??????GC膾睡??篌????????????欠鎖腮?鐚?STW鐚?鐚???????Eden??阪??From Survivor??削??絨?絖?羇紫??絲壕院紊???九??To Survivor??削??綛倶?????Eden??阪??From Survivor??冴??絖?羇糸噲莟≦拘蘊?+1???絋????絲壕院綛顔??莨上?育????種?????????????域??綛岩撮??? + 2. **Major GC / Full GC**鐚????絽後??篁ヤ???????笈Е???鐚? + * ???綛岩撮腥咲?岩??莇鰹??絋???亥??篁e噲莟≧?????絲取?頑??綛岩撮羯\????? + * 羂娯??篁?/???腥咲?雁Ã??岩??莇潟?? + * System.gc()茴?????Ǎ??綮肴佈鐚????綣阪?駈????? + * CMS GC筝下??Concurrent Mode Failure???Promotion Failed??? + * 膸?莅≦????亥??Minor GC????????域??綛岩撮???綛喝??紊у?鎀т?????綛岩撮?????î??腥咲?眼?? + Full GC篌?????????岩肩???鐚???亥??篁e?????綛岩撮鐚?鐚?綛九櫝?処??茵???雁??鐚??????割??GC膊?羈?鐚?鐚??????区????随??篌?絲取?頑????炊?狗?雁??STW??? + * **絲壕院絋?篏?????????域??綛岩撮**鐚? + * **綛顔????????**鐚????Survivor??坂賢鐚?絲壕院罸???セ??筝?罨?Minor GC鐚?綛顔??絨怨??1???綵?綛顔??莨上?遺??絎???種??藥?莅?15鐚???? `-XX:MaxTenuringThreshold` 莅丞舟鐚?鐚????筝?罨?Minor GC??九葦篌?茴?紊???九?域??綛岩撮??? + * **紊у噲莟∞?贋・菴???ヨ??綛岩撮**鐚?絲剛??筝?篋?緇?紊х??絲壕院鐚?莇?菴? `-XX:PretenureSizeThreshold` 莅丞舟???紊у???鐚?筝坂????水?????Survivor??坂????翫????九研??ョ????ц?遵?????鐚?篌???贋・?????亥??篁?GC??九???????域??綛岩撮??? + * **??????綛顔????ゅ??**鐚?JVM綛銀????紙?壚献??惹????у拘蘊??????若??絎?篌?膸?莅?Survivor??坂賢???筝?拘蘊?絲壕院??????????糸ぇ絨??絋???????筝?拘蘊??????????絲壕院?????糸ぇ絨鎀т??Survivor??榊??筝????鐚???d??紊т?????膈?篋?莚ュ拘蘊??????????絲壕院絨???贋・菴???ヨ??綛岩撮鐚???割戎絎?篁ス??綛顔??菴?羃∴松??育????若?? + * **筝肢?????JVM??????**鐚? + * **??????絖???後??**鐚? + * `-Xms`鐚????紮????紊у????? + * `-Xmx`鐚????紊у??紊у????? + * `-Xmn`鐚???亥??篁eぇ絨?????絽梧??綛岩撮紊у?? = MaxHeapSize - NewSize鐚???? + * `-XX:NewRatio=`鐚????綛岩撮/??亥??篁g??罸?箴?鐚?藥?莅?2鐚???活??綛岩撮:??亥??篁?=2:1鐚???? + * `-XX:SurvivorRatio=`鐚?Eden/Survivor???罸?箴?鐚?藥?莅?8鐚????Eden:Survivor=8:1鐚???? + * `-XX:MaxTenuringThreshold=`鐚?絲壕院?????????綛岩撮??????紊у拘蘊?鐚?藥?莅?15鐚???? + * `-XX:PretenureSizeThreshold=`鐚?紊т??罩ゅぇ絨????絲壕院??贋・???????????綛岩撮鐚?篁?絲?Serial???Parallel Scavenge GC??????鐚???? + * **GC??後??**鐚? + * `-XX:+UseSerialGC`鐚?篏睡??Serial GC??? + * `-XX:+UseParNewGC`鐚?篏睡??ParNew GC鐚???亥??篁e攻茵?鐚???? + * `-XX:+UseParallelGC` / `-XX:+UseParallelOldGC`鐚?篏睡??Parallel Scavenge / Parallel Old GC??? + * `-XX:+UseConcMarkSweepGC`鐚?篏睡??CMS GC??? + * `-XX:+UseG1GC`鐚?篏睡??G1 GC??? + * `-XX:MaxGCPauseMillis=