源碼分析:java堆的創(chuàng)建-java開發(fā)java經(jīng)驗(yàn)技巧

源碼分析:java堆的創(chuàng)建-java開發(fā)java經(jīng)驗(yàn)技巧

ID:30854066

大?。?06.87 KB

頁數(shù):17頁

時(shí)間:2019-01-04

源碼分析:java堆的創(chuàng)建-java開發(fā)java經(jīng)驗(yàn)技巧_第1頁
源碼分析:java堆的創(chuàng)建-java開發(fā)java經(jīng)驗(yàn)技巧_第2頁
源碼分析:java堆的創(chuàng)建-java開發(fā)java經(jīng)驗(yàn)技巧_第3頁
源碼分析:java堆的創(chuàng)建-java開發(fā)java經(jīng)驗(yàn)技巧_第4頁
源碼分析:java堆的創(chuàng)建-java開發(fā)java經(jīng)驗(yàn)技巧_第5頁
資源描述:

《源碼分析:java堆的創(chuàng)建-java開發(fā)java經(jīng)驗(yàn)技巧》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、源碼分析:Java堆的創(chuàng)建-編程開發(fā)技術(shù)源碼分析:Java堆的創(chuàng)建丿京文出處:iceAetcma虛擬機(jī)在內(nèi)存中申請一片區(qū)域,由虛擬機(jī)自動管理,用來滿足應(yīng)用程序?qū)ο蠓峙涞目臻g需求,即堆空間。由于程序運(yùn)行的局部特性,程序創(chuàng)建的大多數(shù)對象都具有菲常短的生命周期,而程序也會創(chuàng)建一些生命周期特別長的對象。簡單的復(fù)制收集器無論對象的生命周期是長是短,都會進(jìn)行復(fù)制操作。而生命周期較長的對象在多次垃圾回收期間內(nèi)并不會被冋收,這就使得這些對象被來冋復(fù)制而使得算法性能大大下降。分代收集把堆分為多個了堆,分別用來存放不同壽命的對象。新生對象空間的將經(jīng)丿力最頻繁的垃圾回收,而對丁經(jīng)丿力了若干次垃圾收集后仍然存活的對

2、象,將成長為成熟對彖,并移動到成熟對象的子堆中,而對老生代子堆的垃圾冋收就不會像新生對象子堆那么頻繁。HotSpot的堆空間分為新生代(YoungGen)和老年代(OldGen,此外還冇位于非堆空間的永久代,但在Java8中將移除永久代),新生代又分為Eden區(qū)和2個Survivor區(qū)(From/To)用以進(jìn)行復(fù)制收集垃圾對彖。對Java堆和對彖的分析將從Java堆的創(chuàng)建開始,然后分析Java對彖的分配與垃圾回收。一、堆的實(shí)現(xiàn)方式在虛擬機(jī)的創(chuàng)建初始化過程屮,通過調(diào)用Universe的成員函數(shù)initialize_heap()將完成Java堆的初始化。在Universe模塊下的初始化將根據(jù)虛擬

3、機(jī)選項(xiàng)來選擇堆的具體實(shí)現(xiàn)方式:1.若虛擬機(jī)配置UseParallelGC,則Java堆的堆類型為ParallclScavcngcIIcap(并行收集堆)//hotspot/sre/share/vm/memory/universe?epp屮if(UseParallelGC){#ifndefSERIALGCUniverse::_collectedHeap二newParallelScavengeHeapO;#else//SERIALGCfatal(z,UseParallelGCnotsupportedinjavakernelvm.〃);#endif//SERIALGC2?若虛擬機(jī)配置UseGIGC

4、,那么將選擇堆類型為GlCollectedHeap,垃圾收集策略將使用專用的GlCollectorPolicy(垃圾優(yōu)先收集)策略elseif(UseGIGC){ttifndefSERIALGCGlCollccto^Policy*glp=newGlCollcctorPolicyBcstRcgionsFirst();GlCollectedHeap*glh=newGlCollectedHeap(glp);Universe::_collectedHeap二glh;#else//SERTALGCfatal("UseGIGCnotsupportedinjavakernelvm.〃);itendif//

5、SERIALGC3.否則,虛擬機(jī)將使用GenCol1ectedHeap(分代收集堆)Universe::_collectedHeap二newGenCol1ectedHeap(gc_policy);各個堆實(shí)現(xiàn)類的類關(guān)系如下:對于默認(rèn)情況下的堆實(shí)現(xiàn),還耍根據(jù)配置選擇垃圾回收策略gc_policy來構(gòu)造一個GenCollectedHeap,這里根據(jù)虛擬機(jī)配置選擇不同的GC策略:(1)?若虛擬機(jī)配置UseSerialGC,那么將使用MarkSweepPolicy(標(biāo)記-清除)策略GenCollectorPolicy*gc_policy;if(UseSerialGC){gc_policy二newMar

6、kSweepPolicy();}~(2).若虛擬機(jī)配置UscConcMarkSwccpGC和UscAdaptivcSizcPolicy,那么將使用ASConcurrcntMarkSwccpPolicy(ill適應(yīng)并發(fā)標(biāo)記-清除)策略,若沒有指定UseAdaptiveSizePolicy,虛擬機(jī)將默認(rèn)使用ConcurrentMarkSweepPolicy(并發(fā)標(biāo)記-清除)策略elseif(UseConcMarkSweepGC){ttifndefSERIALGCif(UscAdaptivcSizcPolicy){gcpolicy=newASConcurrentMarkSweepPolicy();

7、}else{gc_policy=newConcurrentMarkSweepPolicy();}-(1)?若沒冇進(jìn)行配置,虛擬機(jī)將默認(rèn)使用MarkSweepPolicy策略else{//defaultoldgenerationgcpolicy=newMarkSweepPolicy();}~如下表所示:虔擬機(jī)配置參數(shù)內(nèi)存堆實(shí)現(xiàn)回收策略UseParallelGCParallelScavengerHeapGener

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時(shí)可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。