gc垃圾回收

對象已死?

  1. 計數(shù)算法

    • 算法很容易理解

    在對象中添加一個引用計數(shù)器熊响,每當有一個地方引用它時昧碉,計數(shù)器值就加一蓝纲;當引用失效時阴孟,計數(shù)器值就減一;任何時刻計數(shù)器為零的對象就是不可能再被使用的

    • 優(yōu)點
      雖然占用了額外空間税迷, 但判定效率高,原理簡單锹漱,大多數(shù)情況下不錯

    • 缺點

    主流的Java虛擬機里面都沒有選用引用計數(shù)算法來管理內(nèi)存箭养,主要原因是,這個看似簡單的算法有很多例外情況要考慮哥牍,必須要配合大量額外處理才能保證正確地工作毕泌,譬如單純的引用計數(shù)就很難解決對象之間相互循環(huán)引用的問題。

     例如:
      objA.next = objB
      objB.next = objA
      objA與objB的計數(shù)都不為0而 = 1嗅辣,但是實際上他們已經(jīng)不會在被使用
    
  1. 可達性分析算法

    • 思路

    這個算法的基本思路就是通過一系列稱為“GCRoots”的根對象作為起始節(jié)點集撼泛,從這些節(jié)點開始,根據(jù)引用關系向下搜索澡谭,搜索過程所走過的路徑稱為“引用鏈”(ReferenceChain)愿题,如果某個對象到GCRoots間沒有任何引用鏈相連,或者用圖論的話來說就是從GCRoots到這個對象不可達時蛙奖,則證明此對象是不可能再被使用的潘酗。

    • GC root的判定

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

      • 在方法區(qū)中類靜態(tài)屬性引用的對象,譬如Java類的引用類型靜態(tài)變量雁仲。

      • 在方法區(qū)中常量引用的對象仔夺,譬如字符串常量池(StringTable)里的引用

      • 在本地方法棧中JNI(即通常所說的Native方法)引用的對象。

      • Java虛擬機內(nèi)部的引用攒砖,如基本數(shù)據(jù)類型對應的Class對象缸兔,一些常駐的異常對象(比如NullPointExcepiton、OutOfMemoryError)等吹艇,還有系統(tǒng)類加載器惰蜜。

      • 所有被同步鎖(synchronized關鍵字)持有的對象。

      • 反映Java虛擬機內(nèi)部情況的JMXBean掐暮、JVMTI中注冊的回調(diào)蝎抽、本地代碼緩存等。

對象引用

在JDK1.2版之后路克,對象引用有 強引用樟结,軟引用,弱引用精算,虛引用

  • 強引用 :無論如何都不會被gc回收瓢宦,如Objectobj=newObject()

  • 軟引用:還有用,但非必須灰羽,在系統(tǒng)將要發(fā)生內(nèi)存溢出異常前驮履,會把這些對象列進回收范圍之中進行第二次回收鱼辙,如果回收了還不夠,就會拋異常;

  • 弱引用:非必須對象玫镐,被弱引用關聯(lián)的對象只能生存到下一次垃圾收集發(fā)生為止

  • 虛引用: 最弱的一種倒戏,為一個對象設置虛引用關聯(lián)的唯一目的只是為了能在這個對象被收集器回收時收到一個系統(tǒng)通知

方法區(qū)的垃圾回收

方法區(qū)垃圾回收 基本為常量字符串 + 類卸載

  • 判斷常量不再被使用:如果一個常量x進入方法區(qū)后恐似,虛擬機中不存在任何一個引用 = x杜跷,則會被回收

  • 判斷一個類是否要被卸載

    1. 該類型不存在任何一個實例 或者 派生子類實例

    2. 加載該類的類加載器已經(jīng)被回收 , 這個條件除非是經(jīng)過精心設計的可替換類加載器的場景,如OSGi矫夷、JSP的重加載等葛闷,否則通常是很難達成的。

    3. 對應的Class對象沒有被引用過

以上條件實現(xiàn)僅被允許卸載双藕,但不是必然的淑趾,

關于是否要對類型進行回收,HotSpot虛擬機提供了參數(shù)進行控制

  • 在大量使用動態(tài)代理(動態(tài)字節(jié)碼技術)的場景 或 動態(tài)生成jsp的忧陪,jvm通常要具備類卸載功能
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扣泊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子赤嚼,更是在濱河造成了極大的恐慌旷赖,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件更卒,死亡現(xiàn)場離奇詭異紧憾,居然都是意外死亡蝌蹂,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來设褐,“玉大人悟民,你說我怎么就攤上這事丸卷⊥伲” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵辨萍,是天一觀的道長棋恼。 經(jīng)常有香客問我,道長锈玉,這世上最難降的妖魔是什么爪飘? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮拉背,結果婚禮上师崎,老公的妹妹穿的比我還像新娘。我一直安慰自己椅棺,他們只是感情好犁罩,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布齐蔽。 她就那樣靜靜地躺著,像睡著了一般床估。 火紅的嫁衣襯著肌膚如雪含滴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天丐巫,我揣著相機與錄音蛙吏,去河邊找鬼。 笑死鞋吉,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的励烦。 我是一名探鬼主播谓着,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼坛掠!你這毒婦竟也來了赊锚?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤屉栓,失蹤者是張志新(化名)和其女友劉穎舷蒲,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體友多,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡牲平,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了域滥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纵柿。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖启绰,靈堂內(nèi)的尸體忽然破棺而出昂儒,到底是詐尸還是另有隱情,我是刑警寧澤委可,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布渊跋,位于F島的核電站,受9級特大地震影響着倾,放射性物質(zhì)發(fā)生泄漏拾酝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一屈呕、第九天 我趴在偏房一處隱蔽的房頂上張望微宝。 院中可真熱鬧,春花似錦虎眨、人聲如沸蟋软。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽岳守。三九已至凄敢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間湿痢,已是汗流浹背涝缝。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留譬重,地道東北人拒逮。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像臀规,于是被迫代替她去往敵國和親滩援。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

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

  • github上的地址:DevelopBlog 與C語言不同塔嬉,Java內(nèi)存(堆內(nèi)存)的回收由JVM垃圾收集器自動完成...
    Vinctor閱讀 691評論 0 2
  • 學習Java或者從事Java開發(fā)的程序員應該都知道玩徊,在Java語言背后有著一套成熟的體系,這個體系支撐著Java項...
    ChaLLengerZeng閱讀 400評論 0 2
  • (1)引用計數(shù)法 思想:每一個對象都有一個counter谨究,只要有任何一個對象引用了該對象恩袱,則其counter加1,...
    姜小姜小閱讀 5,734評論 0 3
  • https://en.wikipedia.org/wiki/Garbage_collection_(compute...
    ArcherZang閱讀 525評論 0 0
  • 今天感恩節(jié)哎胶哲,感謝一直在我身邊的親朋好友畔塔。感恩相遇!感恩不離不棄纪吮。 中午開了第一次的黨會俩檬,身份的轉(zhuǎn)變要...
    迷月閃星情閱讀 10,559評論 0 11