Java垃圾回收機(jī)制

垃圾回收機(jī)制主要做以下兩件事情:
1跟蹤并監(jiān)控每個(gè)java對象,當(dāng)一個(gè)對象處于不可達(dá)狀態(tài)時(shí)候,回收該對象所占用的內(nèi)存
2清理內(nèi)存分配,回收過程中產(chǎn)生的碎片
垃圾回收機(jī)制需要完成這兩方面的工作漩蟆,而這兩方面的工作量都不算太小,因此垃圾回收算法就成為限制java程序運(yùn)行效率的重要因素眉撵。實(shí)現(xiàn)高效JVM的一個(gè)重要方面就是提供高效的垃圾回收機(jī)制,高效的垃圾回收機(jī)制既能保證垃圾回收的快速運(yùn)行避免內(nèi)存的分配和回收成為應(yīng)用程序的性能瓶頸落塑,又不能導(dǎo)致應(yīng)用程序的停頓纽疟。

垃圾回收的基本算法

實(shí)際上垃圾回收算法不可能實(shí)時(shí)的檢測到j(luò)ava對象的狀態(tài),因此當(dāng)一個(gè)對象失去引用時(shí)候憾赁,它不會立即被垃圾回收污朽,而是等垃圾回收運(yùn)行時(shí)才去回收。
對于一個(gè)垃圾回收的設(shè)計(jì)算法來說可如下:

  • 串行回收和并行回收
    串行回收就是不管系統(tǒng)有多少個(gè)CPU龙考,只使用一個(gè)CPU來執(zhí)行垃圾回收操作蟆肆,而并行回收就是把整個(gè)回收工作拆分成多部分,每個(gè)部分有一個(gè)CPU負(fù)責(zé)晦款,從而讓多個(gè)CPU并行回收炎功,并行回收的效率很高,但復(fù)雜度增加缓溅,內(nèi)存碎片也會增多蛇损。
  • 并發(fā)執(zhí)行和應(yīng)用程序停止 ,應(yīng)用程序停止的垃圾回收方式在垃圾回收時(shí)候會讓程序暫停肛宋,并發(fā)執(zhí)行的垃圾回收雖然不會導(dǎo)致程暫停州藕, 但由于并發(fā) 垃圾回收需要解決和應(yīng)用程序的執(zhí)行沖突(應(yīng)用程序可能會在垃圾回收的時(shí)候修改對象)因此并發(fā)執(zhí)行垃圾回收的系統(tǒng)開銷比應(yīng)用程序停止的垃圾回收更高束世。而且執(zhí)行時(shí)候也需要更多的堆內(nèi)存酝陈。
  • 壓縮和不壓縮和復(fù)制算法 為了減少內(nèi)存碎片,支持壓縮的垃圾回收器會把所有的活的對象搬遷到一起毁涉,然后將之前占用內(nèi)存 全部收回沉帮。不壓縮的回收只是回收內(nèi)存 這樣回收的內(nèi)存不可能是連續(xù)的 因此會有很多的內(nèi)存碎片。較之壓縮回收贫堰,不壓縮式的回收只回收內(nèi)存塊穆壕,而分配內(nèi)存時(shí)候會更慢,而且無法解決內(nèi)存碎片的問題其屏,復(fù)制式垃圾回收會將所有可達(dá)對象復(fù)制到另一塊相同的內(nèi)存中喇勋,這種方式的優(yōu)點(diǎn)是垃圾回收過程不會產(chǎn)生內(nèi)存碎片,但缺點(diǎn)也很明顯偎行,需要復(fù)制數(shù)據(jù)和額外的內(nèi)存川背。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贰拿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子熄云,更是在濱河造成了極大的恐慌膨更,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缴允,死亡現(xiàn)場離奇詭異荚守,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)练般,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門矗漾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人薄料,你說我怎么就攤上這事缩功。” “怎么了都办?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵嫡锌,是天一觀的道長。 經(jīng)常有香客問我琳钉,道長势木,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任歌懒,我火速辦了婚禮啦桌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘及皂。我一直安慰自己甫男,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布验烧。 她就那樣靜靜地躺著板驳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪碍拆。 梳的紋絲不亂的頭發(fā)上若治,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機(jī)與錄音感混,去河邊找鬼端幼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛弧满,可吹牛的內(nèi)容都是我干的婆跑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼庭呜,長吁一口氣:“原來是場噩夢啊……” “哼滑进!你這毒婦竟也來了摹迷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤郊供,失蹤者是張志新(化名)和其女友劉穎峡碉,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體驮审,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鲫寄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了疯淫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片地来。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖熙掺,靈堂內(nèi)的尸體忽然破棺而出未斑,到底是詐尸還是另有隱情,我是刑警寧澤币绩,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布蜡秽,位于F島的核電站,受9級特大地震影響缆镣,放射性物質(zhì)發(fā)生泄漏芽突。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一董瞻、第九天 我趴在偏房一處隱蔽的房頂上張望寞蚌。 院中可真熱鬧,春花似錦钠糊、人聲如沸挟秤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽艘刚。三九已至,卻和暖如春逝慧,著一層夾襖步出監(jiān)牢的瞬間昔脯,已是汗流浹背啄糙。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工笛臣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人隧饼。 一個(gè)月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓沈堡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親燕雁。 傳聞我的和親對象是個(gè)殘疾皇子诞丽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

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

  • 來自: Android夢想特工隊(duì)作者: Aaron主頁: http://www.wxtlife.com/原...
    技術(shù)特工隊(duì)閱讀 4,372評論 0 28
  • 一鲸拥、垃圾回收機(jī)制的意義Java語言中一個(gè)顯著的特點(diǎn)就是引入了垃圾回收機(jī)制,使c++程序員最頭疼的內(nèi)存管理的問題迎刃...
    任任任任師艷閱讀 637評論 0 0
  • 1. 概述 在編寫Java程序時(shí)僧免,一般不用內(nèi)存管理刑赶,不用像C++一樣需要在程序中手動釋放內(nèi)存。JVM的垃圾收集器會...
    Coding小聰閱讀 433評論 0 0
  • 1. 垃圾回收的意義在C++中懂衩,對象所占的內(nèi)存在程序結(jié)束運(yùn)行之前一直被占用撞叨,在明確釋放之前不能分配給其它對象;而在...
    愛情小傻蛋閱讀 933評論 0 11
  • 文/云端一夢 風(fēng)舉起孤單的心事從清明的柳尖走到汨羅江浪花上一半明清浊洞,一半柔軟 端起打好的粽子想起離騷的韻律在江邊牵敷、...
    云端一夢l閱讀 1,401評論 11 46