1. 程式人生 > >PSYoungGen ParNewGeneration DefNewGeneration等名詞解釋

PSYoungGen ParNewGeneration DefNewGeneration等名詞解釋

HotSpot VM的GC組老人之一Jon Masamitsu很久之前就寫過blog講解這個:https://blogs.oracle.com/jonthecollector/entry/our_collectors

簡單來說,有這麼多東西反映了HotSpot VM的開發歷史和實現細節。我在寫篇東西講述這部分歷史,哪天寫完的話在這邊也放個連結嗯。

DefNewGeneration是default new generation
ParNewGeneration是parallel new generation

原本HotSpot VM裡沒有並行GC,當時就只有NewGeneration;後來準備要加入young gen的並行GC,就把原本的NewGeneration改名為DefNewGeneration,然後把新加的並行版叫做ParNewGeneration。

這些XXXGeneration都在HotSpot VM的“分代式GC框架”內。本來HotSpot VM鼓勵開發者儘量在這個框架內開發GC,但後來有個開發就是不願意被這框架憋著,自己硬寫了個沒用寫框架的新並行GC,並拉攏效能測試團隊用這個並行GC來跑分,成績也還不錯,於是這個GC就放進HotSpot VM裡了。這就是我們現在看到的ParallelScavenge。

(結果就是HotSpot GC組不得不維護兩個功能幾乎一樣的並行GC。其實是件很頭疼的事情嗯)

Scavenge或者叫scavenging GC,其實就是copying GC的另一種叫法而已。HotSpot VM裡的GC都是在minor GC收集器裡用scavenging的,DefNew、ParNew和ParallelScavenge都是,只不過DefNew是序列的copying GC,而後兩者是並行的copying GC。

由此名字就可以知道,“ParallelScavenge”的初衷就是把“scavenge”給並行化。換句話說就是把minor GC並行化。至於full GC,那不是當初關注的重點。

把GC並行化的目的是想提高GC速度,也就是提高吞吐量(throughput)。所以其實ParNew與ParallelScavenge都可叫做Throughput GC。
但是在HotSpot VM的術語裡“Throughput GC”通常特指“ParallelScavenge”。


================================

ParallelScavenge和ParNew都是並行GC,主要是並行收集young gen,目的和效能其實都差不多。最明顯的區別有下面幾點:
1、PS以前是廣度優先順序來遍歷物件圖的,JDK6的時候改為預設用深度優先順序遍歷,並留有一個UseDepthFirstScavengeOrder引數來選擇是用深度還是廣度優先。在JDK6u18之後這個引數被去掉,PS變為只用深度優先遍歷。ParNew則是一直都只用廣度優先順序來遍歷
2、PS完整實現了adaptive size policy,而ParNew及“分代式GC框架”內的其它GC都沒有實現
(倒不是不能實現,就是麻煩+沒人力資源去做)。所以千萬千萬別在用ParNew+CMS的組合下用UseAdaptiveSizePolicy,請只在使用UseParallelGC或UseParallelOldGC的時候用它。
3、由於在“分代式GC框架”內,ParNew可以跟CMS搭配使用,而ParallelScavenge不能。當時ParNew GC被從Exact VM移植到HotSpot VM的最大原因就是為了跟CMS搭配使用。

================================

還有一點要注意:上面說ParallelScavenge並行收集young gen,那old/perm gen呢?

其實最初的ParallelScavenge的目標只是並行收集young gen,而full GC的實際實現還是跟serial GC一樣。只不過因為它沒有用HotSpot VM的generational GC framework,自己實現了一個CollectedHeap的子類ParallelScavengeHeap,裡面都弄了獨立的一套介面,而跟HotSpot當時其它幾個GC不相容。其實真的有用的程式碼大部分就在PSScavenge(=“ParallelScavenge的Scavenge”)裡,也就是負責minor GC的收集器;而負責full GC的收集器叫做PSMarkSweep(=“ParallelScavenge的MarkSweep”),其實只是在serial GC的核心外面套了層皮而已,骨子裡是一樣的LISP2演算法的mark-compact收集器(別被名字騙了,它並不是一個mark-sweep收集器)。

當啟用-XX:+UseParallelGC時,用的就是PSScavenge+PSMarkSweep的組合。
這是名副其實的“ParallelScavenge”——只並行化了“scavenge”。

所以其實非要說對應關係的話,PSScavenge才是真的跟ParNew對等的東西;ParallelScavenge這個名字既指代整套新GC,也可指代其真正賣點的PSScavenge。

不知道後來什麼原因導致full GC的並行化並沒有在原本的generational GC framework上進行,而只在ParallelScavenge繫上進行了。其成果就是使用了LISP2演算法的並行版的full GC收集器,名為PSCompact(=“ParallelScavenge-MarkCompact”),收集整個GC堆。

當啟用-XX:+UseParallelOldGC時,用的就是PSScavenge+PSCompact的組合。
此時ParallelScavenge其實已經名不符實了——它不只並行化了“scavenge”(minor GC),也並行化了“mark-compact”(full GC)。

相關推薦

PSYoungGen ParNewGeneration DefNewGeneration名詞解釋

HotSpot VM的GC組老人之一Jon Masamitsu很久之前就寫過blog講解這個:https://blogs.oracle.com/jonthecollector/entry/our_collectors 簡單來說,有這麼多東西反映了HotSpot VM的開發歷

JavaSE--【轉】網絡安全之證書、密鑰、密鑰庫名詞解釋

detail 發的 都是 base64 request 服務器 win art ive 轉載:http://www.cnblogs.com/alanfang/p/5600449.html 那些證書相關的名詞解釋(SSL,X.509,PEM,DER,CRT,CER,KEY,

關於JAXP, JAXB, SAX, StAX, DOM名詞解釋

關於JAXP, JAXB, SAX, StAX, DOM等名詞解釋   DOM(Document Object Model):SAX和DOM最先出來的兩種解析器。是一種tree-based API。DOM的特點是,把整個XML內容讀取記憶體中進行處理。    

死鎖,更新鎖,共享鎖,排它鎖,意向鎖,樂觀鎖,悲觀鎖名詞解釋及案例詳解

開發過程中一直聽別人說死鎖,可有不理解,今天看了一篇博文講解的非常詳細,簡單易懂,所以,轉載下來。這裡做個簡明解釋,為下面描述方便,這裡用T1代表一個數據庫執行請求,T2代表另一個請求,也可以理解為T1為一個執行緒,T2 為另一個執行緒。T3,T4以此類推幾個名詞:(1)髒讀

【轉載】jdk、jre、jvm名詞解釋

摘自網路。 JDK, JRE 和JVM是Java程式語言的核心概念。儘管它們看起來差不多,作為程式設計師我們也不怎麼關心這些概念,但是它們是不同的針對特定目的的產品。這是一道常見的java面試題,而本文則會一一解釋這些概念並給出它們之間的區別。 Java 開發工具包

[轉載] 談談Unicode編碼,簡要解釋UCS、UTF、BMP、BOM名詞

這是一篇程式設計師寫給程式設計師的趣味讀物。所謂趣味是指可以比較輕鬆地瞭解一些原來不清楚的概念,增進知識,類似於打RPG遊戲的升級。整理這篇文章的動機是兩個問題: 問題一:

關於x86、i386、i486、i586和i686名詞解釋

一、x86與i386、i486、i586、i686等         x86或80x86是英特爾Intel首先開發製造的一種微處理器體系結構的泛稱。         該系列較早期的處理器名稱是以數字來表示,並以“86”作為結尾,包括Intel 8086、80186、80286、80386以及80486

談談Unicode編碼,簡要解釋UCS、UTF、BMP、BOM名詞 (ZT)--轉貼

轉貼至:http://www.guidemarvin.com/mypool/index.php/develop/the-chaos-of-character-coding/這是一篇程式設計師寫給程式設計師的趣味讀物。所謂趣味是指可以比較輕鬆地瞭解一些原來不清楚的概念,增進知識,類似於打RPG

大資料,資料分析,機器學習,架構相關係統名稱名詞解釋

常用的一些軟體或其他 1.日誌(日誌收集,日誌處理) 風來了.fox 1.1 Logstash Logstash是一款輕量級的日誌蒐集處理框架,可以方便的把分散的、多樣化的日誌蒐集起來,並進行自定義的處理,然後傳輸到指定的位置,比如某個伺服器或者

電音中DJ/Producer/MC/EDM/Remix/Mix的名詞解釋(轉)

技術 賽事 兩把刷子 傳播 世界 曾經 cer ckey pro DJ DJ是Disc Jockey的縮寫,是電音圈子裏的一種熱門職業,一般大家在夜店或者酒吧看到的站在臺上甩著膀子擰著按鈕或者使勁兒搓碟的就是DJ啦。 DJ的主要工作一般就是在現場用打碟機和混音臺把許多適

音頻中采樣位數,采樣率,比特率的名詞解釋(轉)

工程 性能 dvd 工作室 轉化 術語 意思 普通 時間間隔 采樣位數: 采樣位數可以理解為采集卡處理聲音的解析度。這個數值越大,解析度就越高,錄制和回放的聲音就越真實。我們首先要知道:電腦中的聲音文件是用數字0和1來表示的。所以在電腦上錄音的本質就是把模擬聲音信號轉換成

名詞解釋: Wi-Fi

baidu 允許 網絡 無線局域網 yun 局域網 電子 .org http Wi-Fi (Wireless Fidelity 無線保真)是一種允許電子設備連接到一個無線局域網(WLAN)的技術,通常使用2.4G UHF或5G SHF ISM 射頻頻段。 連接到無線局域網

jmeter名詞解釋之時間(Elapsed Time/ Latency Time/Connection Time)

rgb response sans popu enc sam mod san target 轉載時請標註源自:http://blog.csdn.net/musen518 jmeter報告結果中會出現三個時間 1. Elapsed time 經過的時間

專業名詞解釋

screen 最大 緩沖 ron 核心 off ring 發生 ble Off-Screen Rendering 離屏渲染 離屏渲染,指的是GPU在當前屏幕緩沖區以外新開辟一個緩沖區進行渲染操作。由上面的一個結論視圖和圓角的大小對幀率並沒有什麽卵影響,數量才是傷害的核心輸出

編程語言相關名詞解釋匯總

size compile double 不能 強類型語言 avi src 緩沖 span 今天給大家分享下,我們常見卻不一定清楚的名詞: 先上個圖 我們看這個圖,是一個語言坐標系,分別按編程語言的性質粗分為四個軸:動態、靜態、強類型、弱類型。像筆者使用的Javasc

名詞解釋

調制 推廣平臺 功能 服務 引腳 tro 能力 數字 電路 波特率與比特率:比特率(單位時間內傳輸的二進制位數)=波特率(單位時間內傳輸的符號數)*單個調制狀態對應的二進制位數。 vcc、vdd、vss、vee: 1、對於數字電路來說,VCC是電路的供電電壓,VDD是芯

PCB名詞解釋:通孔、盲孔、埋孔(轉載)

tar content 分享 定位 ear 增加 eight 想要 目的 文章轉載自:https://www.researchmfg.com/2011/07/pth-blind-hole-buried-hole/   PCB名詞解釋:通孔、盲孔、埋孔 Pos

aop中的名詞解釋

dddddd 代理 borde stx height round vertical blue 宋體 aop中的名詞解釋aopspring Joinpoint(連接點) 目標對象中所有可以增強的方法叫做連接點 Pointcut(切入點) 目標對象中要增強的的方

隨筆11 J2EE中常用的名詞解釋

選擇 pan direct cati 應用程序 兼容 inter remote 就會 J2EE中常用的名詞解釋 ① web容器:給處於其中的應用程序組件(JSP,SERVLET)提供一個環境,使JSP,SERVLET直接和容器中的環境變量接口交互,不必關註其它系統問題。主要

初學Windows應用程序開發遇到的幾個專業名詞解釋

程序編譯 理論 文件 微軟 文件的 開發環境 環境 com pos 1、.NET Framework Visual Studio.NET程序開發環境是微軟開發的基於.net 架構的Windows應用程序開發工具,它支持VB.NET、C/C++、C#、Java等編程語言,提供