目錄如下:前言第1章垃圾回收器概述 11.1 垃圾回收算法 21.2 JVM垃圾回收器 21.2.1 串行回收 31.2.2 并行回收 41.2.3 CMS 41.2.4 G...
目錄如下:前言第1章垃圾回收器概述 11.1 垃圾回收算法 21.2 JVM垃圾回收器 21.2.1 串行回收 31.2.2 并行回收 41.2.3 CMS 41.2.4 G...
@D_GrayMan 這兩行日志和這個(gè)bug無(wú)關(guān),日志表示使用內(nèi)存映射來(lái)支持color pointer(也就是多視圖地址映射)。有一個(gè)參數(shù)ZPath可以控制
<新一代垃圾回收器ZGC設(shè)計(jì)與實(shí)現(xiàn)>一書(shū)中第六章和第七章分別介紹了每一行日志的含義,以及ZGC中所以支持的參數(shù)
ZGC源碼分析(6)- 日志分析根據(jù)ZGC運(yùn)行的情況,截取部分關(guān)鍵的日志信息。分析如下: ZGC初始化信息 這一部分主要是ZGC初始化的狀態(tài)。從日志我們看出JVM的版本,是否支持NUMA,大爺內(nèi)存等。還有C...
@Pramyness 這個(gè)問(wèn)題比較復(fù)雜。最簡(jiǎn)單的回答,ZGC再對(duì)象標(biāo)記的時(shí)候,區(qū)分一般的對(duì)象和實(shí)現(xiàn)了finalize的對(duì)象。使用了2個(gè)bits來(lái)標(biāo)記對(duì)象是強(qiáng)引用到達(dá),還是非強(qiáng)引用到達(dá)。利用2個(gè)位可以做到:判斷對(duì)象是否需要回收,對(duì)象在標(biāo)記過(guò)程中該如何處理。
復(fù)雜的回答,涉及到finalizer的注冊(cè),引用的發(fā)現(xiàn),引用的處理和引用的再激活動(dòng)作(即引用在垃圾回收如何處理的整個(gè)過(guò)程),這一部分我正在寫(xiě),回頭可以貼一部分內(nèi)容出來(lái)。
ZGC源碼分析(4)-GC回收的10個(gè)步驟前面我們提到過(guò)GC的啟動(dòng)時(shí)機(jī)。這一節(jié)中主要介紹GC的步驟。一個(gè)GC周期被分成10個(gè)小步驟,分別為: 初始標(biāo)記,該步驟從Root set出發(fā)找出活躍對(duì)象,并入棧;還不需要SWT...
@Pramyness 我不知道你說(shuō)的引用標(biāo)記位指的是哪一塊內(nèi)容。主要是引用這個(gè)詞在JVM中需要根據(jù)上下文理解。不知道你是想了解zgc如何使用color pointer處理并發(fā)?還是想了解垃圾回收過(guò)程中的標(biāo)記階段zgc如何使用位圖記錄對(duì)象的活躍情況(這里涉及到finalize的處理,所以標(biāo)記位有特殊處理)?
ZGC源碼分析(4)-GC回收的10個(gè)步驟前面我們提到過(guò)GC的啟動(dòng)時(shí)機(jī)。這一節(jié)中主要介紹GC的步驟。一個(gè)GC周期被分成10個(gè)小步驟,分別為: 初始標(biāo)記,該步驟從Root set出發(fā)找出活躍對(duì)象,并入棧;還不需要SWT...
@Pramyness 其實(shí)這里有幾個(gè)問(wèn)題。就是為什么有3步需要STW?都解決的是什么問(wèn)題,能不能優(yōu)化?文章并沒(méi)有指出,我正在寫(xiě)一本關(guān)于ZGC設(shè)計(jì)和實(shí)現(xiàn)的書(shū),里面有一章會(huì)對(duì)整個(gè)過(guò)程做詳細(xì)的解釋。
ZGC源碼分析(4)-GC回收的10個(gè)步驟前面我們提到過(guò)GC的啟動(dòng)時(shí)機(jī)。這一節(jié)中主要介紹GC的步驟。一個(gè)GC周期被分成10個(gè)小步驟,分別為: 初始標(biāo)記,該步驟從Root set出發(fā)找出活躍對(duì)象,并入棧;還不需要SWT...
@Pramyness 不好意思,打錯(cuò)了。是“該步需要STW”
ZGC源碼分析(4)-GC回收的10個(gè)步驟前面我們提到過(guò)GC的啟動(dòng)時(shí)機(jī)。這一節(jié)中主要介紹GC的步驟。一個(gè)GC周期被分成10個(gè)小步驟,分別為: 初始標(biāo)記,該步驟從Root set出發(fā)找出活躍對(duì)象,并入棧;還不需要SWT...
根據(jù)ZGC運(yùn)行的情況,截取部分關(guān)鍵的日志信息。分析如下: ZGC初始化信息 這一部分主要是ZGC初始化的狀態(tài)。從日志我們看出JVM的版本,是否支持NUMA,大爺內(nèi)存等。還有C...
ZGC的目標(biāo)是希望更短的聽(tīng)段停頓時(shí)間,同時(shí)希望對(duì)應(yīng)用程序的影響盡量小。所以一定會(huì)控制GC并行線程數(shù)和并發(fā)線程數(shù)。并行線程指的是暫停應(yīng)用執(zhí)行初始標(biāo)記,最終標(biāo)記和初始轉(zhuǎn)移時(shí)候的工...
前面我們提到過(guò)GC的啟動(dòng)時(shí)機(jī)。這一節(jié)中主要介紹GC的步驟。一個(gè)GC周期被分成10個(gè)小步驟,分別為: 初始標(biāo)記,該步驟從Root set出發(fā)找出活躍對(duì)象,并入棧;還不需要SWT...
ZGC為了支持TB級(jí)內(nèi)存,設(shè)計(jì)了分頁(yè)管理(類似于G1的分區(qū));為了能夠快速的進(jìn)行并發(fā)標(biāo)記和并發(fā)移動(dòng),對(duì)內(nèi)存空間重新進(jìn)行了劃分,這就是Color Pointers,同時(shí)設(shè)計(jì)了物...
ZGC以被動(dòng)回收為主,即由后臺(tái)線程控制何時(shí)啟動(dòng)垃圾回收。 ZGC的觸發(fā)時(shí)機(jī)在 jdk11/src/hotspot/share/gc/z/zDirector.cpp ZDire...
最新的JDK 11在2018年9月25號(hào)正式發(fā)布,這這一版本中有不少新的特性,但是最令人關(guān)注的是JDK 11中的新款的垃圾回收器ZGC雖然它被明確地標(biāo)記為實(shí)驗(yàn)性質(zhì)(意味著還不...