五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

美團(tuán)面試:CMS(Concurrent Mark Sweep)GC的工作原理和致

2023-04-12 18:04 作者:碼上加薪  | 我要投稿

易錯(cuò)點(diǎn):在用CMS做老年代的垃圾回收時(shí),GC Roots是一個(gè)廣義的GC Roots,包含年輕代的所有存活對(duì)象。

因此,在CMS的初始化標(biāo)記階段,除了標(biāo)記狹義的GC Roots到老年代的直接引用,還要標(biāo)記年輕代到老年代的直接引用。

JDK8源碼執(zhí)行路徑如下:

一 concurrentMarkSweepGeneration.cpp

定位到2343行,初始化標(biāo)記的入口:M_CMS_Initial_Mark initial_mark_op(this) ,進(jìn)一步跟進(jìn)去,進(jìn)入到第二步。

二 vmCMSOperations.cpp

跟進(jìn)去,找到:_collector->do_CMS_operation(CMSCollector::CMS_op_checkpointRootsInitial, gch->gc_cause());這行代碼,再進(jìn)入到第三步。

三 concurrentMarkSweepGeneration.cpp

① 定位到6636行(具體的初始標(biāo)記工作),checkpointRootsInitial(true);

再往下跟進(jìn),跟進(jìn)到3746行,也就是“② gen_process_strong_roots”

② gen_process_strong_roots

用來處理直接從gc root直達(dá)的對(duì)象。

  // The serial version.
      CMKlassClosure klass_closure(&notOlder);
      gch->rem_set()->prepare_for_younger_refs_iterate(false); // Not parallel.
      gch->gen_process_strong_roots(_cmsGen->level(),
                                    true,   // younger gens are roots
                                    true,   // activate StrongRootsScope
                                    false,  // not scavenging
                                    SharedHeap::ScanningOption(roots_scanning_options()),
                                    &notOlder,
                                    true,   // walk all of code cache if (so & SO_CodeCache)
                                    NULL,
                                    &klass_closure);
    }

跟著gen_process_roots下去后,可以看到gen_process_roots,用來處理直接從gc root直達(dá)的對(duì)象。

所以,現(xiàn)在搞清楚GC Roots的定義了,因此,在做CMS GC時(shí),GC Roots除了一般定義的節(jié)點(diǎn)外,還需要加上從年輕代到老年代的引用。

美團(tuán)面試:CMS(Concurrent Mark Sweep)GC的工作原理和致的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
丹阳市| 唐河县| 哈尔滨市| 留坝县| 怀仁县| 宁河县| 天峨县| 开原市| 绥中县| 比如县| 武胜县| 武定县| 西峡县| 汕头市| 海林市| 秀山| 大新县| 班玛县| 瓦房店市| 礼泉县| 班戈县| 昭苏县| 旺苍县| 五原县| 集贤县| 武清区| 农安县| 元氏县| 兰坪| 弥渡县| 通州区| 钟山县| 松滋市| 聂荣县| 九龙县| 洛扎县| 通州市| 松原市| 会同县| 洛扎县| 余庆县|