摘要:序本主要研究一下的在進(jìn)行的都采用了的技術(shù)面向的垃圾收集器,它的主要有包括這個(gè)階段用到了進(jìn)行包括在進(jìn)行的時(shí)候采用了的技術(shù)全稱為,其要點(diǎn)如下的過程就是遍歷標(biāo)記,采用的是三色標(biāo)記算法,這三種顏色為表示還未訪問到訪問到但是它用到的引用還沒
序
本主要研究一下Garbage Collector的SATB
CMS、G1、Shenandoah在進(jìn)行concurrent marking的都采用了SATB的技術(shù)Shenandoah
Shenandoah面向low-pause-time的垃圾收集器,它的GC cycle主要有
Snapshot-at-the-beginning concurrent mark包括Init Mark(Pause)、Concurrent Mark、Final Mark(Pause)
Concurrent evacuation(這個(gè)階段用到了Brooks Pointers(object version change with additional atomically changed indirection)進(jìn)行copy)
Concurrent update references (optional)包括Init update Refs(Pause)、Concurrent update Refs、Final update Refs(Pause)
Shenandoah在進(jìn)行concurrent marking的時(shí)候采用了SATB的技術(shù)SATB
SATB全稱為Snapshot At The Beginning,其要點(diǎn)如下:
mark的過程就是遍歷heap標(biāo)記live object,采用的是三色標(biāo)記算法,這三種顏色為white(表示還未訪問到)、gray(訪問到但是它用到的引用還沒有完全掃描)、black(訪問到而且其用到的引用已經(jīng)完全掃描完),整個(gè)三色標(biāo)記算法就是從GC roots出發(fā)遍歷heap,針對(duì)可達(dá)對(duì)象先標(biāo)記white為gray,然后再標(biāo)記gray為black;遍歷完成之后所有可達(dá)對(duì)象都是black的,所有white都是可以回收的
SATB僅僅對(duì)于在marking開始階段進(jìn)行"snapshot"(marked all reachable at mark start),但是concurrent的時(shí)候并發(fā)修改可能造成對(duì)象漏標(biāo)記,比如
對(duì)black新引用了一個(gè)white對(duì)象,然后又從gray對(duì)象中刪除了對(duì)該white對(duì)象的引用,這樣會(huì)造成了該white對(duì)象漏標(biāo)記
對(duì)black新引用了一個(gè)white對(duì)象,然后從gray對(duì)象刪了一個(gè)引用該white對(duì)象的white對(duì)象,這樣也會(huì)造成了該white對(duì)象漏標(biāo)記
對(duì)black新引用了一個(gè)剛new出來的white對(duì)象,沒有其他gray對(duì)象引用該white對(duì)象,這樣也會(huì)造成了該white對(duì)象漏標(biāo)記
對(duì)于三色算法在concurrent的時(shí)候可能產(chǎn)生的漏標(biāo)記問題,SATB在marking階段中,對(duì)于從gray對(duì)象移除的目標(biāo)引用對(duì)象標(biāo)記為gray,對(duì)于black引用的新產(chǎn)生的對(duì)象標(biāo)記為black;由于是在開始的時(shí)候進(jìn)行snapshot,因而可能存在Floating Garbage
小結(jié)CMS、G1、Shenandoah在進(jìn)行concurrent marking的時(shí)候都采用了SATB的技術(shù);SATB concurrent mark便是Shenandoah GC的第一個(gè)cycle
遍歷heap標(biāo)記live object,采用的是三色標(biāo)記算法,這三種顏色為white(表示還未訪問到)、gray(訪問到但是它用到的引用還沒有完全掃描)、black(訪問到而且其用到的引用已經(jīng)完全掃描完),整個(gè)三色標(biāo)記算法就是從GC roots出發(fā)遍歷heap,針對(duì)可達(dá)對(duì)象先標(biāo)記white為gray,然后再標(biāo)記gray為black;遍歷完成之后所有可達(dá)對(duì)象都是black的,所有white都是可以回收的
SATB僅僅對(duì)于在marking開始階段進(jìn)行"snapshot"(marked all reachable at mark start);在marking階段中,對(duì)于從gray對(duì)象移除的目標(biāo)引用對(duì)象標(biāo)記為gray,對(duì)于black引用的新產(chǎn)生的對(duì)象標(biāo)記為black;由于是在開始的時(shí)候進(jìn)行snapshot,因而可能存在Floating Garbage
docsnapshot-at-the-beginning
Shenandoah GC: Concurrent parallel marking
Floating Garbage
[HotSpot] VM 關(guān)于incremental update與SATB的一點(diǎn)理解
Java Hotspot G1 GC的一些關(guān)鍵技術(shù)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/73871.html
代碼 public static void main(String[] args) { for (GarbageCollectorMXBean gc : ManagementFactory.getGarbageCollectorMXBeans()) { long count = gc.getCollectionCount(); ...
摘要:并發(fā)標(biāo)記清除垃圾回收器,使用多個(gè)線程來掃描堆內(nèi)存并標(biāo)記可被清除的對(duì)象,然后清除標(biāo)記的對(duì)象。垃圾回收器應(yīng)用于大的堆內(nèi)存空間。它將堆內(nèi)存空間劃分為不同的區(qū)域,對(duì)各個(gè)區(qū)域并行地做回收工作。它會(huì)通過把重復(fù)的值移動(dòng)到同一個(gè)數(shù)組來優(yōu)化堆內(nèi)存占用。 本文非原創(chuàng),翻譯自Types of Java Garbage Collectors在Java中為對(duì)象分配和釋放內(nèi)存空間都是由垃圾回收線程自動(dòng)執(zhí)行完成的。...
摘要:適用收集場(chǎng)景新生代收集老年代收集并行收集器又叫吞吐量收集器應(yīng)用于多核系統(tǒng)。它是為了平衡延時(shí)和吞吐量之間的一種最優(yōu)關(guān)系。 回顧傳統(tǒng)垃圾回收器 HotSpot 垃圾收集器實(shí)現(xiàn) Serial Collector(串型收集器) 使用場(chǎng)景,大多數(shù)服務(wù)器是單核CPU。適用收集場(chǎng)景:1. 新生代收集(Young Generation Collection)2. 老年代收集(Old Genera...
摘要:要加左右,因?yàn)槲粰C(jī)器上的對(duì)象更大要加左右,因?yàn)槲粰C(jī)器上的對(duì)象更大對(duì)于服務(wù)器程序的原則是保證越多內(nèi)存越好將和設(shè)置成一樣大,關(guān)掉自動(dòng)調(diào)整大小的機(jī)制。對(duì)于服務(wù)器程序的原則是決定你能夠給的最大內(nèi)存,然后根據(jù)的大小來找到最好的設(shè)置。 Generations Young Generation 組成:eden + 2 survivor spaces Young generation的gc稱作min...
摘要:表示允許垃圾收集線程處理本次垃圾收集開始前沒有處理好的日志緩沖區(qū),這可以確保當(dāng)前分區(qū)的是最新的。垃圾收集線程在完成其他任務(wù)的時(shí)間展示每個(gè)垃圾收集線程的最小最大平均差值和總共時(shí)間。 本文翻譯自:https://www.redhat.com/en/blog/collecting-and-reading-g1-garbage-collector-logs-part-2?source=auth...
閱讀 1784·2023-04-25 21:50
閱讀 2429·2019-08-30 15:53
閱讀 774·2019-08-30 13:19
閱讀 2752·2019-08-28 17:58
閱讀 2475·2019-08-23 16:21
閱讀 2708·2019-08-23 14:08
閱讀 1383·2019-08-23 11:32
閱讀 1448·2019-08-22 16:09