什么是cms(什么是cma检测认证)

??è?‘??¨??′???JVM????…3???PPT??????CMS??—?3????è???o???é??????ˉ????é?…èˉ??o????é??è???¤??o?解????1?????§??-????????

???1???ˉCMS

CMS?…¨?§° Concurrent Mark Sweep?????ˉ??????1???‘?????????”¨???è?°-??…é?¤??—?3??????????????”???¨???

?|????è??1′??£????”¨CMS??????????”???¨???é?è|??·????è???????o?????°-“XX:+UseConcMarkSweepGC”??

????”¨??o??ˉ???

GCè???¨???-?????????é?????ˉ1?—????è|??±?è??é???????????????”¨??·?o??¨?????…?è??é???—?é—′??????é????

??o??1???

??????é???—?é—′è??è?????é??????¥é???????…?-??¢??‰???–??

??|?¤–?????—?3??????°?ˉ”è???¤????????|?????1???—??o??1???èˉ???‰

?????°??o???

??1???GC???è§|??‘??o????????o????‘¨????§Old GC???è¢???¨??‰?’??????¨Old GC

??a?oo???解????????¨?????¥é?“???1?????‰??¥???

?‘¨????§Old GC

?‘¨????§Old GC????‰§è?????é?è?‘?1????Background Collect????ˉ1è??1′??£è??è??????”??????¨GC?—¥??—??-?ˉ”è?????è§?????”±?????°?o??¨?ConcurrentMarkSweepThread??a??ˉ??¤?–-???é??è?¤2s??‰??ˉ??|é?è|?è§|??‘??

什么是cms(什么是cma检测认证)

è§|??‘??????

1???|?????2???‰è?????-XX:+UseCMSInitiatingOccupancyOnly???è???????o?????1????”?é???????°?????3?????ˉ??|è§|??‘?????oè???o??????ˉ?¢???|???è????a?????°????????????????¤§é—?é¢???’??¥???é???o|??‰??

2??è??1′??£????”¨???è????°é???? CMSInitiatingOccupancyFraction???é??è?¤92%??

3???°??1…??£???????”¨???è????°é???? CMSInitiatingPermOccupancyFraction???é??è?¤92%????‰??????ˉ????ˉ CMSClassUnloadingEnabled??

4???–°?”???£???????????…????¤±è′¥??

????????…????¤±è′¥

è??1′??£??ˉ??|??‰è?3?¤??????oé—′??¥??1?o3?…¨é?¨????–°?”???£?ˉ1è±???–?????2?13???????????°è??1′??£????ˉ1è±?????|????????¤????èˉ?????°±????—?è??è???????è??1′??£???????”????é?2?-¢??????è??è??YGC????—?????‘?”????????¤±è′¥??

?‘¨????§Old GCè???¨?

??“?????????è?3?—????é???”¨a????è?°-??…???a???—?3??ˉ1è??1′??£è??è??????”????è???¨???ˉ??¥èˉ′??????????????è?°??o?-??′??ˉ1è±??????…?????‰???????ˉ1è±?????????ˉ??o?o??????°??′??aè???¨??????????è????????é?…??—?3?è??è???2?è???1???????????′??aè???¨??????o?|?????????aé?¨??????

什么是cms(什么是cma检测认证)

?ˉ1è±???¨???è?°è???¨???-?????1??????è?°??…??μ???????????‰?±????

  1. ???è‰2?ˉ1è±????è?¨?¤oè?aèo???aè¢????è?°???
  2. ??°è‰2?ˉ1è±????è?¨?¤oè?aèo?è¢????è?°????????…é?¨????”¨??aè¢??¤???????
  3. é?‘è‰2?ˉ1è±????è?¨?¤oè?aèo?è¢????è?°?????…é?¨????”¨é??è¢??¤???????
什么是cms(什么是cma检测认证)

???è????‘?”?Background Collect?—????Java???????ˉ1è±????????|???????

???解CMS??????????”???o?????????????—??¥??‰

1??InitialMarking???????§???–???è?°?????′??aè???¨?STW??‰

èˉ¥é????μ????o??¨??‰§è????????è|?????????o??¤?-¥???

  1. ???è?°GC Roots??ˉè?????è??1′??£?ˉ1è±????
  2. é??????–°?”???£?ˉ1è±???????è?°??ˉè?????è??1′??£?ˉ1è±????

èˉ¥è???¨???“??????????ˉ1è±????????|???????

???解CMS??????????”???o?????????????—??¥??‰

2??Marking????1???‘???è?°??‰

èˉ¥é????μGC?o??¨??’??o”?”¨?o??¨??1???‘?‰§è?????é?????InitialMarkingé????μ???è?°??o??¥????-??′??ˉ1è±????????????§??-é’??’???è?°è???o??ˉ1è±???ˉè??????ˉ1è±???

?????oèˉ¥é????μ?1???‘?‰§è??????????¨è??è?????é—′??ˉè????‘?”??–°?”???£????ˉ1è±?????????°è??1′??£????–è…??ˉ??′??¥??¨è??1′??£???é…??ˉ1è±?????–è…??′?–°è??1′??£?ˉ1è±????????”¨?…3?3??-‰?-‰????ˉ1?o?è???o??ˉ1è±????é????ˉé?è|?è??è??é???–°???è?°????????|?????‰?o??ˉ1è±??°±???è¢?é?—????????‘?”????????????…??μ??

??o?o????é??é???–°???è?°????????????èˉ¥é????μ?????????è?°?ˉ1è±??‰??¨???Card???èˉ???oDirty????????-??aé??‰????è???o?Dirty Card????ˉ1è±????é???…??‰??????′??aè??1′??£??

???解CMS??????????”???o?????????????—??¥??‰

3??Precleaning???é¢???…?????‰

é?è???????°CMSPrecleaningEnabledé‰????…3é—-èˉ¥é????μ???é??è?¤??ˉ?”¨??????è|??????¤????o???…???

  1. ?¤?????–°?”???£?·2?????‘??°???????”¨????ˉ”?|???¨?1???‘é????μ?????¨Eden??o??-???é…??o?????aA?ˉ1è±????A?ˉ1è±?????”¨?o?????aè??1′??£?ˉ1è±?B???è????aB?1??‰??2???‰è¢????è?°??‰?????¨è????aé????μ?°±??????è?°?ˉ1è±?B??o?′?è·??ˉ1è±???
  2. ??¨?1???‘???è?°é????μ????|????è??1′??£??-??‰?ˉ1è±???…é?¨????”¨??‘?”??????–??????????‰??¨???Card???è?°??oDirty????…????è??é???1?é??????”¨CardTable???è???ˉ????a?±?????????°?????“?????????ModUnionTalble??‰???é?è???‰????è???o?Table???é???–°???è?°é?£?o???¨?1???‘???è?°é????μ????”¨è¢???′?–°????ˉ1è±????????????°è??1′??£????ˉ1è±??????????°±??¨è??1′??£????ˉ1è±???‰

4??AbortablePreclean?????ˉ??-?–-???é¢???…?????‰

èˉ¥é????μ??‘?”?????‰??????ˉ????–°?”???£Eden??o?????…?-?????”¨é???¤§?o??????°CMSScheduleRemarkEdenSizeThreshold é??è?¤??ˉ2M????|?????–°?”???£????ˉ1è±??¤a?°‘????°±?2???‰??…è|??‰§è??èˉ¥é????μ?????′??¥?‰§è??é???–°???è?°é????μ??

??o???1?é?è|?è????aé????μ????-???¨?????·????ˉ???1????

?????oCMS GC?????????????????ˉé???????????????”??—???????????—?é—′????‰??¥??¨èˉ¥é????μè|??°????¤§?????a???????¤????é?£?o???¨?1???‘é????μè¢??o”?”¨?o??¨???′?–°???è??1′??£?ˉ1è±????è????·??¨?????????é???–°???è?°é????μ?°±??ˉ??¥?°‘?¤???????o???????????—?é—′?1????????o”???é???????

??¨èˉ¥é????μ??????è|???a??ˉ????????¤????o????

  1. ?¤???? From ?’? To ??o????ˉ1è±???????è?°??ˉè?????è??1′??£?ˉ1è±?
  2. ?’????????aé????μ????·????‰?????¤????Dirty Card??-????ˉ1è±?

??“????o????è????aé?è?‘??????????′??a??ˉ??????????‰“?–-è????a??a??ˉ???????????‰??‰??a???

  1. ??ˉ??¥è????????¤???a??ˉ????????° CMSMaxAbortablePrecleanLoops???é??è?¤??ˉ0?????????2???‰??a??ˉ?????°???é???????
  2. ?|?????‰§è??è????aé?è?‘????—?é—′è????°?o?é????CMSMaxAbortablePrecleanTime???é??è?¤??ˉ5s??????é??o??a??ˉ??
  3. ?|?????–°?”???£Eden??o?????…?-?????”¨???è????°?o?é????CMSScheduleRemarkEdenPenetration???é??è?¤50%??????é??o??a??ˉ?????è????a??????è???¤???????????‰??????ˉ?????¨è??è??Precleaning?—????Eden??o???????”¨????°??o????????1?????‰

?|??????¨??a??ˉé??o?1??‰??????‘?”??o??????YGC????ˉ1?o????é?¢???Remarké????μ??¥èˉ′????¤§?¤§???è???o??‰?????1′è????£???è′???…????????ˉ??‘?”?YGC?1?é???oo??o??§???????‰??¥??aè???¥??¥·è??5s??…??ˉ??¥??¥?????YGC??

...
1678.150: [CMS-concurrent-preclean-start]
1678.186: [CMS-concurrent-preclean: 0.044/0.055 secs]
1678.186: [CMS-concurrent-abortable-preclean-start]
1678.365: [GC 1678.465: [ParNew: 2080530K->1464K(2044544K), 0.0127340 secs] 
1389293K->306572K(2093120K), 
0.0167509 secs]
1680.093: [CMS-concurrent-abortable-preclean: 1.052/1.907 secs] 
....

??¨???é?¢GC?—¥??—??-???1678.186??ˉ??¨?o?AbortablePrecleané????μ?????¨é??????????°2s?°±??‘?”??o??????YGC??

5??FinalMarking????1???‘é???–°???è?°???STWè???¨???‰

èˉ¥é????μ?1???‘?‰§è???????¨?1??‰?????1?è??é????μ???GC?o??¨??’??o”?”¨?o??¨?????—??‰§è??????¥??ˉ”????|???¨?‰“?‰????é—′??????è????¨?‰”?o??±‘??‰?????ˉè???o§?”??–°???????”¨?…3?3??|???????

  1. è??1′??£????–°?ˉ1è±?è¢?GC Roots????”¨
  2. è??1′??£?????a???è?°?ˉ1è±?è¢??–°?”???£?ˉ1è±?????”¨
  3. è??1′??£?·2???è?°????ˉ1è±??¢?????–°????”¨?????‘è??1′??£?…?????ˉ1è±?
  4. ?–°?”???£?ˉ1è±??????‘è??1′??£????”¨è¢????é?¤
  5. ?1?è??è????‰?…??????…??μ..

???è?°?ˉ1è±???-??ˉè????‰???o??·2?????¨Precleaningé????μ?’?AbortablePrecleané????μè¢??¤????è???????????-???¨?2???¥??—????¤???????????‰??¥è????‰è??è???|????????¤???????

  1. é??????–°?”???£?ˉ1è±????é???–°???è?°
  2. ??1???GC Roots???é???–°???è?°
  3. é?????è??1′??£???Dirty Card???é???–°???è?°???è??é?????Dirty Card?¤§é?¨????·2?????¨cleané????μ?¤????è??

??¨??????-¥éa¤??-???é?è|?é??????–°?”???£????…¨é?¨?ˉ1è±?????|?????–°?”???£???????”¨??????é?????é?è|?é??????¤????????ˉ1è±??1?????¤????è???ˉ1?o?è????aé????μ?????è—?—???¥èˉ′?????ˉ??a???é??????????o??ˉè???¤§é??????ˉ1è±???ˉ????—??-??′???????è???”è???o??ˉ1è±??1???ˉè??????”¨?¤§é?????è??1′??£?ˉ1è±????é????????¤??o”èˉ¥????”????è??1′??£?ˉ1è±?è??2???‰è¢?????”????é?????é’??’????????°?1??¢????????°‘??‰????|??????¨AbortablePrecleané????μ??-è???¤???°?¥??????‘?”??????YGC???è????·?°±??ˉ??¥é???…??‰?????—????????ˉ1è±???

?|??????¨AbortablePrecleané????μ?2???¥??—????‰§è???????YGC??????1???????

CMS??—?3???-???????o?????a?????°???CMSScavengeBeforeRemark???é??è?¤?1??2???‰????ˉ????|????????ˉèˉ¥?????°?????¨?‰§è??èˉ¥é????μ?1??‰?????????o???è§|??‘?????YGC?????ˉ??¥????°‘?–°?”???£?ˉ1è±????é??????—?é—′???????”?????1???′????o?????1??

???è?????è???§??????°??‰?????‰???????????ˉé??????o?Remarké????μ??????é???—?é—′???????????ˉ??¨?–°?”???£?ˉ1è±?????°‘?????…??μ????1??¤??o??????YGC???????ˉ???????ˉ??¨AbortablePrecleané????μ?·2?????‘?”??o??????YGC???????????¨èˉ¥é????μ????????????è§|??‘???????

?‰??¥??????é?è|?????????

?????¨Old GC

è????a?????¨Old GC???è???¨????è§|??‘???????ˉ”è??è????????

  1. YGCè???¨???‘?”?Promotion Failed???è??è??ˉ1è??1′??£è??è??????”?
  2. ?ˉ”?|??‰§è???o?System.gc()????‰??????ˉ?2???‰?????°ExplicitGCInvokesConcurrent
  3. ?…??????…??μ…

?|????è§|??‘?o??????¨Old GC???è???—??‘¨????§Old GC?-£??¨?‰§è?????é?£?1?????¤oè???‘¨????§Old GC????‰§è???????????????a?—??????aè????‰???§???¨Old GC??¨è??è????‰????1?è?°??? concurrent mode failure ??–è… concurrent mode interrupted??

?????¨GC???§??—????é?è|???¤?–-??????GC??ˉ??|è|??ˉ1è??1′??£?????oé—′è??è??Compact????????oé???—?é—′????‘¨????§GC???é?????¤§é??????¢??‰???oé—′??‰?????¤?–-é?è?‘?????°?|???????

*should_compact =
 UseCMSCompactAtFullCollection &&
 ((_full_gcs_since_conc_gc >= CMSFullGCsBeforeCompaction) ||
 GCCause::is_user_requested_gc(gch->gc_cause()) ||
 gch->incremental_collection_will_fail(true /* consult_young */));

??¨??‰?§???…??μ??????è??è???????????

  1. ?…???-?????°UseCMSCompactAtFullCollection(é??è?¤true)?’? CMSFullGCsBeforeCompaction(é??è?¤0)????‰??¥é??è?¤?ˉ????????????¨GCé??????ˉ1è??1′??£?????…?-???oé—′è??è????????????°±??ˉ????ˉ1è±??§???¨??°??…?-???????·|è?1??
  2. ??“????o?????ˉ”?|??‰§è???o?System.gc()????‰??????ˉ?2???‰?????°ExplicitGCInvokesConcurrent????1????è??è??????????
  3. ?|?????–°?”???£???????????…???????¤±è′¥??

??|????????¨????????—?3?????§°??oMSC??????è?°-??…???-?????????é???”¨????o??¨?????…¨??????????–1???è??è?????????”?é????????????—?é—′???é?????é??…

é?£?????|????????¨????????—?3???ˉ???1???·????‘¢???

?????|????????¨???????‰§è??é?è?‘???Foreground Collect?????′??aè???¨?????ˉ1?‘¨????§Old GC??¥èˉ′????°‘?o?Precleaning?’?AbortablePreclean??¤??aé????μ????…????è???¨?é???·?????¤???

?|?????‰§è??System.gc()???è???”?·?????o??????°ExplicitGCInvokesConcurrent???è???—??1?????±??o??????¨GC???????????¨è???‘¨????§Old GC???è??è??????ˉ”?|????????‰§è??è???????????1????????-‰2s????£??¥?????????è???ˉ???é????ˉ??¨?‘¨????§Old GC??

本文链接:https://www.zhantian9.com/232986.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2000000@qq.com 举报,一经查实,本站将立刻删除。

发表回复

您的电子邮箱地址不会被公开。