日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 學院 > 開發設計 > 正文

JVM-GC設計思路分析

2019-11-10 20:14:48
字體:
來源:轉載
供稿:網友

原文地址http://blog.csdn.net/zhshulin/article/details/50583724

java中將內存的控制交給JVM來實現,方便了JAVA程序猿,當然犧牲了一部分效率,不過總體來看是值得的。那么JVM中是如何設計GC的呢,本文從幾個問題入手,然后分析了一下設計思路,如果有理解錯誤的地方,請批評指正!主要參考了《深入理解JAVA虛擬機》這本書,圖是盜來的,圖的內容和書上一樣。

    在JVM的內存模型中,堆內存是JAVA內存區域中最大的一部分,GC主要就是發生在堆中,用來回收那些無用的對象。這樣直接就引申出了第一個問題:什么樣的對象需要被回收?判斷條件是什么?如何判斷?

    先談談什么對象需要被回收,OK,我們自己想一想,肯定是沒用的對象需要被回收,對吧?那么如何判斷哪些對象還有用,哪些沒用了呢?一個對象被創建,如果被引用了,那這個對象肯定是有用的對吧,如果引用全失效了,那就是沒用的對象了,需要被回收?;谶@個思想,引用計數法誕生了。引用計數算法:這個非常容易理解,給每個對象添加一個引用計數器,對象每被引用一次,引用計數器就+1,引用失效時就-1。那么判斷一個對象是否有用的條件就變成了對這個計數器值得判斷了,如果為0,那么被回收,如果為>0,那么保留。但是這種方式會產生一個問題,就是對象之間的循環引用無法被識別,即使這兩個對象不能被訪問,但是它們之間互相引用著對方,故而計數器肯定>0,那么就不能被回收。JVM中并沒有使用引用計數算法,而是使用了根搜索算法。根搜索算法:這個算法也不難理解,通過條件,選擇一系列的對象成為“GC Roots"對象,然后將”GC Roots"對象作為起始點開始向下搜索,搜索所有走過的路徑成為“引用鏈”。在這個引用鏈上的對象就保留,而如果一個或多個互相引用的對象不在這個引用鏈上,或者說對象到“GC Roots"不可達,那么這些就是無用的對象,都需要被回收。

注:Java語言中,可作為GC Roots的對象包括下面幾種:

1) 虛擬機棧(棧幀中的本地變量表)中引用的對象

2) 方法區中類靜態屬性引用的對象

3) 方法區中常量引用的對象

4) 本地方法棧中JNI(即一般說的Native方法)引用的對象

既然根搜索算法需要考慮到對象之間的引用,那么就要說一下JAVA中對象的引用類型了:

從JDK1.2之后,Java對引用的概念進行了擴充,將引用分為強引用,軟引用,弱引用,虛引用,這四種引用的強度依次減弱

1) 強引用就是指在程序代碼之中普遍存在的,類似 “Object obj = new Object()” 這類的引用,只要強引用還存在,垃圾回收器永遠不會回收被引用的對象。我們也正是利用這個原理來重現了OOM異常。

2) 軟引用(SoftReference類)是用來描述一些還有用但并非需要的對象,對于軟引用關聯著的對象,在系統將要發生內存異常之前,將會把這些對象列進回收范圍之中進行第二次回收,如果這次回收還沒有足夠的內存,才會拋出內存異常

3) 弱引用(WeakReference類)也是用來描述非必需對象的,被弱引用關聯的對象只能生存到下一次GC發生之前,當垃圾收集器工作時,無論當前內存釋放足夠,都會回收掉只被弱引用關聯的對象

4) 虛引用(PhantomReference類)也稱為幽靈引用或者幻影引用,它是最弱的一種引用關系,一個對象是否有虛引用的存在,完全不會對其生存時間構成影響,也無法通過虛引用來取得一個對象實例,對一個對象設置虛引用關聯的唯一目的就是能在這個對象被收集器回收時收到一個系統通知

    那么上述內容看完之后想必都知道了什么樣的對象會被GC了吧,那么JVM又是通過什么方式來回收這些內存的呢?下面就需要了解一下垃圾的回收算法了。

標記-清除算法    試著想一想,如果要你要設計一個算法清除滿足收集條件的對象來釋放內存的時候你該怎么做呢?最簡單的是不是就是把需要回收的對象標記一下,然后直接全部回收就行了?照著這個思路就是”標記-清除算法”的思想了,算法分為“標記”和“清除”兩個階段:首先標記出所有需要回收的對象,在標記完成后統一回收掉所有被標記的對象。想法很簡單,實際也就是這么做的。但是呢,這種方式是不是最好的?有什么缺陷?    想到這里,就需要分析一下了。一個個的標記然后清除,效率高嗎?當然不??纯聪聢D的標記-清除算法的示意圖,可以發現,標記-清除之后會產生大量的內存碎片,如果碎片太多,當程序運行沒有足夠連續的內存空間來存放大對象的時候,就會不得不提前觸發一次GC。概括來說就是有兩個缺點:效率不高;內存碎片可能導致提前發生GC。    學習算法的童鞋應該都很清楚,效率是很重要的,有時候需要使用空間來換時間提高效率,那么就需要了解一下第二種回收算法了——復制算法。

復制算法    復制算法呢?它的思想就是空間換時間,將內存容量劃分成相等的兩塊,當這一塊的內存用完了,就將還存活的內存復制到另一塊上,然后再把使用過的內存空間一次性清理干凈。這樣每次都是對其中的一塊的內存進行回收,也就不需要考慮內存碎片等復雜情況了,只需要移動堆頂指針,然后按照順序分配即可,實現簡單,運行高效。但是缺點也很明顯:內存變成一半了.......下圖就是復制算法的示意圖:

    我們知道,在JVM中堆內存的新生代(new )中的對象存活率較低,采用復制算法每次需要復制的對象也不是很多,效率較高,空間換時間值得的?,F在的商業虛擬機都是采用復制算法來回收新生代,IBM的專門研究表明:新生代中對象98%是朝生夕死,所以并不需要按照1:1的比例來劃分空間來實現復制算法,而是將內存分為一塊較大的Eden空間和兩塊較小的Survivor空間,每次使用Eden空間和其中一個Survivor空間。當發生GC的時候,將Eden空間和Survivor空間中還存活的對象拷貝到另一個沒使用的Survivor空間中,然后再清理掉Eden和剛剛使用的Survivor空間。Hotspot虛擬機默認Eden和Survivor的大小比例是8:1,也就是新生代每次可以使用的內存空間是整個新生代的90%,只有10%的空間會被浪費。    OK,通過上述的分析,我們知道了在JVM中對于新生帶的垃圾回收使用的復制算法(此時發生的GC成為young gc),效率高,我們也就只犧牲了10%的內存空間,挺不錯的。請注意這里提到的young gc,后面會提到full gc。但是雖然IBM研究表明一般情況下有98%的對象是朝生夕死,需要回收的,但是不能保證每次回收的時候對象的存活率都低于10%啊,是不是?一旦超過了10%,那么空閑的survivor空間就不夠用了,此時就必須依賴老年代的空間來進行分配擔保(就相當于A找B借錢,C替A做擔保,保證如果A換不起就自己來還,C就是擔保人,映射到內存中老年代所占內存就是擔保人)。如果空閑的Survivor空間無法存放上次GC之后的存活對象,那么這些對象就會通過分配擔保機制進入老年代。    老年代呢,里面保存的都是生存周期較長的對象(老年代里面的對象都是經過了新生代,然后多次存活下來的對象),而復制算法在應對這種存活率極高的內存區域的對象回收時,需要執行較多的復制操作,效率將會變低。關鍵的還是如果不想浪費50%的空間,那么就需要分配擔保機制(參考新生代的設計),但是并沒有額外的空間來擔保了。所以對于老年代的特性,有人提出了一種“標記-整理算法”,看到這里肯定就想到了前面提到的“標記-清除算法“了,OK,這兩個算法標記的過程都是一樣的,就在于”標記-整理算法”不是直接對可回收對象進行清理,而是讓所有存活的對象都向一端移動,然后直接清理掉端邊界以外的內存,示意圖如下圖所示。    很明顯,這種”標記-整理算法“的效率不高,所以如果老年代發生GC,那么效率也就不高了,并且一旦老年代發生GC,那么發生的必然是Full GC ,Full GC 會同時對老年代和新生代進行GC操作,順便也會回收一下perm gen中的內存,所以相比較young gc來說很慢,我們在JVM調優的時候需要避免JVM頻繁發生full gc。full gc的速度比young gc要慢10倍。

分代收集算法    通過上述的分析呢,就知道了對于堆中的新生代和老年代會采用不同的垃圾回收算法來回收“死亡”的對象,這種分代回收對象的方法稱為“分代收集算法”。這個分代收集算法根據各個年代的特點采用適當的收集算法。在新生代中,每次GC的時候都發現大批的對象死去,只有少量存活,自然選用復制算法;而對于老年代這種存活率高、沒有額外擔??臻g的,就必須使用“標記-清除算法”或者“標記-整理算法“了。    GC設計的理論基礎就是這些了,其實原理還是比較容易理解的。GC的具體實現就是垃圾收集器,目前尚沒有一個垃圾收集器是完美的,需要配合使用。下面插上一副堆內存劃分圖。注:本文寫的比較片面,如果想更深入了解,推薦這篇博文:http://jbutton.iteye.com/blog/1569746


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲第一中文字幕| 欧美日韩亚洲一区| 国产午夜精品视频免费不卡69堂 | 日韩在线精品| 日韩在线不卡| 国产成人日日夜夜| 国产激情在线视频| 91精品国产自产在线丝袜啪| 日韩中文字幕综合| 国产免费久久久| 亚洲天堂国产视频| 视频一区中文字幕国产| 日本亚洲视频在线| 日韩一级二级三级| 亚洲乱码视频| 亚洲免费观看在线观看| 亚洲国产福利视频| 一区二区在线看| 中文字幕日韩视频| 亚州福利视频| 国产超级va在线视频| 91精品在线视频观看| 国产一区在线精品| 亚洲第一网中文字幕| 日韩免费视频| 成人久久在线| 中文在线视频观看| 亚洲社区在线| 久久精品女人| 中文字幕日韩第一页| 一区二区视频免费看| 中文字幕精品亚洲| aa国产成人| av高清一区| 在线免费91| 国产99精品| 久久综合九色欧美综合狠狠| 一区免费在线| 国产区高清在线| a级在线免费观看| 91吃瓜在线观看| 国产综合精品在线| 成年人黄国产| 久久久精品福利| 欧美三级日韩在线| 日韩免费电影网站| 日韩在线中文| 精品国产999| 日韩精品视频中文在线观看| 久久久久久欧美| 日韩欧美中文在线| 不卡视频一区二区| 精品中文字幕在线| 久久久精品福利| 久久精品99久久久久久久久| 欧美99久久| 91精品免费观看| 国产成人精品三级| 91国内精品在线视频| 国产 日韩 欧美 综合 一区| 91精品在线视频观看| 日韩欧美在线视频| 一本一道久久a久久精品综合蜜臀| 日韩精品丝袜在线| 人人做人人澡人人爽欧美| 久久久综合av| 日韩欧美中文在线| 亚洲一二三不卡| 欧美在线日韩| 中文字幕综合在线| www日韩欧美| 日韩三级视频在线| 久久夜色精品国产欧美乱极品 | 国产一区免费视频| 欧美自拍一区| 中文字幕精品视频在线| 在线一区免费| 国产午夜在线观看| 91av久久久| 欧美日韩中文字幕| 日韩高清不卡一区| 欧美亚洲视频在线看网址| 日韩一级免费视频| 欧美在线亚洲一区| 免费看日韩精品| √天堂资源中文www| 日韩欧美一二三区| 午夜私人影院在线观看| 日韩午夜中文字幕| 日韩视频 中文字幕| 欧美激情一区二区在线| 深夜福利一区| 日本精品二区| 被陌生人带去卫生间啪到腿软| 欧美日韩人人澡狠狠躁视频| 国产网站av| 欧美日韩综合色| 日韩国产亚洲欧美| av中文天堂在线| 国产欧美日韩精品在线| 欧美日韩视频网站| 日韩.欧美.亚洲| 久久99精品久久久久婷婷| 中文在线视频| 一区二区高清视频| 91精品国产99| 色www精品视频在线观看| 国产高清在线一区| 天堂在线视频中文网| 精品av中文字幕在线毛片| 日韩视频国产视频| 久久麻豆视频| 久久香蕉一区| 中文在线а√在线8| 高清国产一区| 国产欧美日韩成人| 国产无套粉嫩白浆在线2022年| 亚洲欧洲国产视频| 欧美日韩免费精品| 日韩欧美一级二级三级久久久| 在线精品日韩| 91亚洲欧美| 91精品国产经典在线观看| 黄色一级大片在线免费看国产一| 亚洲丝袜一区| 中文字幕不卡三区| 国产成人精品网址| 欧美日韩在线视频首页| 欧美日韩国产片| 色综合天天性综合| 亚洲a中文字幕| 中文字幕亚洲国产| 日韩亚洲欧美中文在线| 精品久久九九| 日韩欧美一二三区| 日本精品在线| 国产日产一区二区| 日韩精品第一区| 欧美日韩国产91| 国产日韩亚洲欧美| 精品久久久久久无| 在线一区免费| 伊人中文字幕在线观看| 日韩av二区| 亚洲制服丝袜一区| 午夜一区二区三区免费| 正在播放日韩精品| 免费一级欧美在线观看视频| 香蕉av一区| 91精品综合久久久久久| 欧美日韩在线国产| 日韩视频 中文字幕| 日本啊v在线| 国产黄色片大全| 中文字幕 乱码 中文乱码91| 亚洲欧洲综合另类| 狠狠色噜噜狠狠狠狠97| 欧美中文字幕第一页| 亚洲高清在线免费| h片精品在线观看| √天堂资源中文www| 国产一卡2卡3卡4卡网站免费| 成人禁用看黄a在线| va中文字幕| 国产一级免费看| 高清在线一区| 欧美三级一区二区三区| 日韩精品视频中文字幕| 久久久99免费| 亚洲一区中文| 亚洲图片小说综合| 中文字幕 欧美日韩| 91精品久久久久| 中文字幕日韩免费视频| 日本国产一区| а√天堂8资源中文在线| 久久视频免费看| 亚洲成av人片一区二区密柚| 亚洲综合欧美在线| 日韩视频精品在线观看| 日本不卡免费高清视频| www中文字幕在线观看| 在线看的av| 国产激情在线播放| 国产视频中文字幕在线观看| 黄色一区二区视频| 国产视频中文字幕在线观看| 精品999视频| 欧美日韩国产一区| 在线资源av| 欧美三级在线播放| 亚洲女同中文字幕| 亚洲精品欧美二区三区中文字幕| 国产xxx在线| 综合激情国产一区| 一本一道综合狠狠老| www日韩在线观看| 999精品色在线播放| 日韩一级中文字幕| 日韩欧美色综合| 免费看ww视频网站入口| 麻豆精品99| 日韩三级一区二区| 久久91精品国产91久久小草| 中文字幕精品一区二区三区在线| 老司机久久99久久精品播放免费| 国产欧美日韩成人| 久久精品日韩无码| 国产高清一级片| 日韩精品视频免费看| 日韩中文字幕网| 欧美国产三级| 午夜国产在线| 一区在线视频观看| 色猫猫国产区一区二在线视频| 午夜av一区二区| 日韩欧美一卡二卡| 国产视频aaa| 国产福利在线看| 91精品免费观看| 91精品国产综合久久久久久漫画 | 久久99精品久久久久子伦| 中文字幕亚洲二区| 色综合久久88色综合天天免费| 九七久久人人| 欧美日韩视频免费播放| 亚洲黄色一区二区| 欧美成人精品在线| 日韩欧美中文| 日本一级一片免费视频| 亚洲第一福利视频在线| 国产91一区| 欧美日韩精品在线观看| 国产精品福利视频一区二区三区| 在线视频不卡国产V| 91欧美日韩| 国产福利免费在线观看| 欧美日韩亚洲天堂| 国产精品一区二区三区免费观看| 蜜桃视频一日韩欧美专区| 国产99在线|亚洲| 中文字幕在线看精品乱码| 日韩欧美999| 一本大道一区二区三区| 欧美日韩国产专区| 亚洲第一视频在线观看| 国产小视频在线观看免费| 亚洲欧美99| 欧美另类久久久品| 91久久精品国产91性色69| 久99久视频| 日韩字幕在线观看| av首页在线| 久久人人88| 一本一道综合狠狠老| av免费观看国产| 欧美国产中文| 国自产拍在线网站网址视频| 色国产在线视频| 欧美不卡一区二区| 日韩国产专区| 久99久视频| 日韩欧美资源站| 国产日韩1区| 亚洲成在线观看| 色一区在线观看| 国自产拍在线网站网址视频| 日韩在线视频网| 一区二区视频在线观看免费的| 欧美日韩视频不卡| 欧美日韩精品高清| 日韩不卡一二三区| wwwww亚洲| 色综合天天综合网天天狠天天| 日韩在线视频网| www.中文字幕在线观看| 欧美日韩综合在线观看| 一区二区三区免费看视频| 精品欧美日韩| 欧美日韩性视频一区二区三区| 欧美日韩国产123区| wwww亚洲| 国产在线不卡av| 欧美乱大交xxxxx另类| 欧美中文字幕在线| 国产在线精品日韩| 国产不卡视频在线| 亚洲成人7777| 精品一区二区在线观看视频| 亚洲а∨精品天堂在线| 欧美日韩视频在线| 日韩中文字幕综合| 国产三级在线| 综合图区亚洲白拍在线| 国产乱国产乱300精品| 国产一二三区精品视频| 在线视频一区二区三区在线播放| 免费精品国产自产拍在| 欧美国产91| 欧洲精品久久久| 91精品久久久久久蜜臀| 欧美日韩国产一级片| 国产999在线观看| 日韩视频精品在线| 国产免费电影网站入口| 欧美国产91| 日韩精品丝袜在线| 亚洲成av人片| 国产一级免费看| 日韩中文字幕在线视频观看 | 久久99精品久久久久久青青日本 | 国产午夜精品视频| 欧美不卡一区二区| 欧美日韩中文字幕在线| 精品国产99久久久久久| 91精品国产色综合久久久蜜香臀| 成人久久在线| 久久久另类综合| 精品欧美日韩| 国产丝袜一区二区| 国产成人精品网址| 欧美日韩精品综合在线 | eeuss一区| 亚洲经典中文字幕| 中文字幕精品视频| 免费日韩精品中文字幕视频在线| 国产视频一二区| 欧美日韩在线视频免费观看| 欧美日韩国产91| 国产日韩精品电影| 亚洲免费在线观看av| 一区二区三区精品99久久| 欧美亚洲另类制服自拍| 午夜一区二区三区视频| 日韩精品在线观看视频| 天堂√8在线中文| 不卡在线视频| 日韩精品丝袜在线| 在线一区免费| 成人无遮挡免费网站视频在线观看| 中文字幕亚洲区| 香蕉人人精品| 欧美日韩激情在线一区二区三区| 国产日韩中文字幕在线| 亚洲欧美中文字幕| 国产不卡视频在线| 国产欧美久久久久久久久| 国产福利不卡| 樱花草www在线| www.三级.com| 日韩一级二级三级精品视频| 91精品国产91久久| 国产乱码在线| 色偷偷一区二区三区| 刘玥91精选国产在线观看| 亚洲福利精品视频| 久久精品免费在线观看| 欧美亚洲免费高清在线观看| 日韩欧美亚洲视频| 欧美亚洲综合视频| av免费在线播放| 久久久99久久精品欧美| www.老鸭窝.com| 1区不卡电影| 视频在线一区二区| 欧美日韩精品在线| 日韩精品在线视频观看| 97国产视频| 亚洲第一视频| 日韩精品视频在线免费观看| 蜜桃视频一日韩欧美专区| 精品国产99久久久久久| 不卡一二三区| 欧美日韩视频不卡| 91麻豆精品国产91久久久使用方法| 久久精品一二三| 欧美婷婷久久| 中文字幕在线导航| 日韩欧美中文字幕公布| 亚洲 欧美 精品| 久久蜜桃精品| 日韩欧美国产1| 日韩中文字幕在线播放| av免费在线播放| 欧美激情一区二区在线| 一本一道综合狠狠老| 欧美乱大交xxxxx免费| 一区在线播放视频| 国产极品嫩模在线视频一区 | 中文字幕在线视频网| 久久精品一二三| 国产福利免费观看| 五月天久久比比资源色| 中文字幕欧美日韩在线不卡| 欧美日韩国产免费观看| 亚洲一区精品在线| 亚洲乱码一区av黑人高潮| 国产日产一区二区三区| 国产欧亚日韩视频| 国产aa精品|