JAVA虛擬機(jī)筆記- 垃圾收集器

JAVA虛擬機(jī)筆記- 垃圾收集器

1.JAVA虛擬機(jī)中程序計(jì)數(shù)器陪腌,虛擬機(jī)棧畜埋,本地方法3各區(qū)域會(huì)隨著線程的結(jié)束而被回收莫绣,線程的創(chuàng)建而創(chuàng)建,因此這幾區(qū)域不用考慮垃圾回收悠鞍,需要考慮的是JAVA堆和方法區(qū).

2.引用計(jì)數(shù)算法

在對(duì)象頭信息中添加增加計(jì)數(shù)器对室,如果當(dāng)前對(duì)象被引用就計(jì)數(shù)+1,引用失效就-1,計(jì)數(shù)器為0就代表當(dāng)前對(duì)象沒有被使用,有個(gè)問題就是對(duì)象之間相互應(yīng)用的問題狞玛,有可能導(dǎo)致無法回收软驰,缺點(diǎn)是
1.每次垃圾回收都會(huì)暫停當(dāng)前的線程
2.垃圾回收器需要間隔性檢查,并且清除的過程相對(duì)較慢心肪。
3.在標(biāo)記之后锭亏,會(huì)產(chǎn)生大量的內(nèi)存碎片,導(dǎo)致分配大空間對(duì)象的時(shí)候硬鞍,由于找不到足夠大的內(nèi)存慧瘤,而在一次GC

3.可達(dá)性分析算法

        通過一系列的稱為“GC ROOTS”的對(duì)象作為起點(diǎn)線,從這些節(jié)點(diǎn)往下搜索,搜索所走過的路徑稱為引用鏈(Reference Chain)固该,當(dāng)一個(gè)對(duì)象到GC Roots沒有任何引用鏈相連時(shí)锅减,則證明此對(duì)象是不可用的,下圖對(duì)象object5, object6, object7雖然有互相判斷伐坏,但它們到GC Roots是不可達(dá)的怔匣,所以它們將會(huì)判定為是可回收對(duì)象。
image
  在Java語言里桦沉,可作為GC Roots對(duì)象的包括如下幾種:
    a.虛擬機(jī)棧(棧楨中的本地變量表)中的引用的對(duì)象
    b.方法區(qū)中的類靜態(tài)屬性引用的對(duì)象
    c.方法區(qū)中的常量引用的對(duì)象
    d.本地方法棧中JNI的引用的對(duì)象

4.引用

1.在JDK1.2之前每瞒,JAVA中定義引用就是Reference類型的數(shù)據(jù)中存儲(chǔ)的數(shù)值代表的是另一塊的內(nèi)存的起始值就代表,這塊內(nèi)存帶有一個(gè)引用
2.在JAVA1.2之后對(duì)應(yīng)用又進(jìn)行的分配纯露,分為強(qiáng)引用剿骨,軟引用,弱引用埠褪,虛引用這4種浓利。
   2.1 強(qiáng)引用:就是new創(chuàng)建出來的對(duì)象,只要強(qiáng)引用還存在钞速,就永遠(yuǎn)不會(huì)回收贷掖。
   2.2 軟應(yīng)用:(sof)在內(nèi)存不足的時(shí)候,會(huì)把這類對(duì)象放到準(zhǔn)備GC的范圍之內(nèi)
   2.3 弱引用:(wr)只要當(dāng)垃圾回收器開始回收就會(huì)回收當(dāng)前對(duì)象玉工。
   2.4  虛引用:(pr)最弱的一種應(yīng)用羽资,唯一的目的就是在垃圾回收的時(shí)候給個(gè)系統(tǒng)通知。

5.垃圾收集算法

5.1 標(biāo)記-清除算法遵班,就是標(biāo)出需要回收的對(duì)象屠升,然后銷毀的時(shí)候清楚標(biāo)記,由于標(biāo)記和清楚效率不是很高狭郑,而且清楚之后會(huì)形成較多的空白區(qū)域腹暖,產(chǎn)生大量的不連續(xù)的內(nèi)存碎片,導(dǎo)致程序在運(yùn)行的時(shí)候找不到分配一個(gè)足夠大的內(nèi)存區(qū)域翰萨,而導(dǎo)致再一次的GC
image
5.2 復(fù)制算法脏答,就是將一塊區(qū)域分為2部分,一部分空出來亩鬼,當(dāng)一部分內(nèi)存不夠用了殖告,就把當(dāng)前部分存活對(duì)象復(fù)制到另一半,然后清空另一半?yún)^(qū)域達(dá)到內(nèi)存回收雳锋,會(huì)造成內(nèi)存的浪費(fèi)黄绩。
image
5.3 標(biāo)記-整理算法,還是按照標(biāo)記清楚算法一樣玷过,但是后續(xù)步揍不是直接回收爽丹,而是讓所有的存貨對(duì)象都像一端移動(dòng),然后清理掉端邊界以外的部分辛蚊。
image
5.4 分代收集算法粤蝎,當(dāng)前基,本商用的虛擬機(jī)都是采用此種算法袋马,此種算法的思路是初澎,根據(jù)對(duì)象的存活周期不同分為幾塊,一般是把java堆分為新生代和老年代虑凛,在新生代中碑宴,每次垃圾回收時(shí)都有大量對(duì)象死去,就用復(fù)制算法卧檐,而老年代對(duì)象存活效率高墓懂,沒有額外空間給分配,就必須使用‘標(biāo)記清理霉囚,或者標(biāo)記整理’算法來清理捕仔。

5.5 分代收集:

虛擬機(jī)給每個(gè)對(duì)象定義了一個(gè)對(duì)象年齡的計(jì)數(shù)器,如果對(duì)象在出生經(jīng)過一次的Minor GC之后仍然存活盈罐,會(huì)被移動(dòng)到Survuvor區(qū)中榜跌,每經(jīng)過一次 Minor Gc之后并且能夠存活下來,就年齡+1盅粪,當(dāng)年齡增加到15歲的時(shí)候钓葫,就會(huì)被晉升到老年代中去,這個(gè)老年代的閾值是可以設(shè)置的票顾。如果Survuvor區(qū)中相同年齡的對(duì)象大小之后大于或者等于Survuvor區(qū)內(nèi)存的一半础浮,不用等到15歲帆调,直接大于或者等于改年齡段直接進(jìn)入老年區(qū)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末豆同,一起剝皮案震驚了整個(gè)濱河市番刊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌影锈,老刑警劉巖芹务,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鸭廷,居然都是意外死亡枣抱,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門辆床,熙熙樓的掌柜王于貴愁眉苦臉地迎上來佳晶,“玉大人,你說我怎么就攤上這事佛吓∠恚” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵维雇,是天一觀的道長(zhǎng)淤刃。 經(jīng)常有香客問我,道長(zhǎng)吱型,這世上最難降的妖魔是什么逸贾? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任津滞,我火速辦了婚禮触徐,結(jié)果婚禮上撞鹉,老公的妹妹穿的比我還像新娘享郊。我一直安慰自己,他們只是感情好苔咪,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布松捉。 她就那樣靜靜地躺著可柿,像睡著了一般营密。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上被去,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天坯墨,我揣著相機(jī)與錄音,去河邊找鬼耍攘。 笑死少漆,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的检访。 我是一名探鬼主播脆贵,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼柏腻,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼系吭!你這毒婦竟也來了五嫂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤肯尺,失蹤者是張志新(化名)和其女友劉穎沃缘,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體则吟,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡槐臀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了逾滥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片峰档。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖寨昙,靈堂內(nèi)的尸體忽然破棺而出讥巡,到底是詐尸還是另有隱情,我是刑警寧澤舔哪,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布欢顷,位于F島的核電站,受9級(jí)特大地震影響捉蚤,放射性物質(zhì)發(fā)生泄漏抬驴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一缆巧、第九天 我趴在偏房一處隱蔽的房頂上張望布持。 院中可真熱鬧,春花似錦陕悬、人聲如沸题暖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春扁瓢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背井辆。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓绝骚,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親痊乾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子皮壁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容