<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在討論回收演演算法前,更為重要的問題是如何判斷一個物件是否可以被回收?
參照計數演演算法
每個物件會維護一個count,當有一個物件的屬性參照自己時,count自增。當為0時,意味可被回收。
缺點:
可達性分析(目前主流虛擬機器器垃圾回收器採取的演演算法):
將符合的GC Roots作為初始的存活對集合,以該集合中的Roots為起點,探索所有能夠被Roots參照到的物件,並加入到Roots集合中,這個過程稱之為標記。未被探索到的物件即是可回收物件(死亡的)。
優點:可以解決參照計數演演算法的迴圈依賴問題。從GC Roots出發,無法探測到迴圈依賴的物件,那麼就會進行回收。
那麼什麼樣的物件可以被作為Root物件(包括但不限於)
有些時候,我們有這樣一種需求,當記憶體足夠時,會保留一些物件,方便後續呼叫。當記憶體不足時,將這些物件回收,留出更多的記憶體空間。系統的很多快取功能符合上述條件。
// 強參照:只要參照可達,就永遠不會被回收 Object obj = new Object(); // 軟參照:堆記憶體不夠時被回收 SoftReference<Object> softReference = new SoftReference<>(obj); // 弱參照:只要觸發GC就會被回收 WeakReference<Object> weakReference = new WeakReference<>(obj); /** * 虛參照:虛參照不會決定物件的生命週期,如果一個物件持有虛參照,那麼和沒有參照一樣,get永遠返回null。 * * 需要配合參照佇列使用,當垃圾回收器準備回收一個虛參照時,會將其加入到參照佇列中。 * * 程式可以根據虛參照是否入隊,來了解物件是否即將被垃圾回收,進而執行一些響應操作。 */ Object obj2 = new Object(); ReferenceQueue<Object> referenceQueue = new ReferenceQueue<>(); PhantomReference<Object> phantomReference = new PhantomReference<>(obj2, referenceQueue); System.out.println(phantomReference.isEnqueued()); // false obj2 = null; System.gc(); Thread.sleep(500); System.out.println(phantomReference.isEnqueued()); // true
記憶體碎片問題:造成了不連續的記憶體碎片。當有大物件需要儲存時,若連續的碎片空間儲存不下, 難免會再次觸發垃圾回收的操作。
優點:
缺點:
標記清除的改進
優點:解決了標記清除的記憶體碎片問題
缺點:
新生代
根據新生代的特點,物件存活率較低,應用標記複製演演算法。分配記憶體空間時,使用Eden區與一塊Survivor區,GC後將存活的物件放入到另一塊Survivor區。如果另一塊Survivor區不夠存放存活物件,多數情況下會使用老年代進行分配擔保(分配擔保:將無法儲存的存活物件放入其他儲存空間)
迴圈:
Eden + S0 -> S1 (將Eden 與 S0存活的物件複製到S1)
Eden + S1 -> S0
Eden + S0 -> S1
老年代
根據老年代的特點,物件存活率較高,一般用標記-清除,標記-整理演演算法。
到此這篇關於Java GC垃圾回收演演算法分析的文章就介紹到這了,更多相關Java GC垃圾回收內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45