4.2019年周陽老師JVM·第四部分四大垃圾回收算法

引用計數法

在這裏插入圖片描述

jvm複習

在這裏插入圖片描述

gc是什麼(分代收集算法)

在這裏插入圖片描述

GC4大算法總體概述

在這裏插入圖片描述
總體概述:
在這裏插入圖片描述
在這裏插入圖片描述
爲什麼full gc 要比 gc慢?
從大小上來說,old區佔了三分之二,young區只有三分之一。
四大算法清單:
在這裏插入圖片描述
引用計數法,只需要瞭解,幾乎不會用。
在這裏插入圖片描述
答jvm就三方面:有哪些?怎麼用?各自優缺點?
引用計數法代碼演示:
在這裏插入圖片描述

上述代碼就產生了互相引用,哪怕主引用置空了,但是堆裏面還存在着具體的引用,無法被回收
因爲這種缺陷,所以現在幾乎不用了。
在這裏插入圖片描述

上述方法是手動喚醒GC。你只是建議jvm去gc,而不能精準控制觸發gc。並不是立刻執行的。實際工作中禁止使用
在這裏插入圖片描述

談談你對陰影部分的理解?只有一個空的main函數,後臺有幾個線程?
答:2個線程。1個main線程,一個gc線程。

複製算法

複製之後有交換,誰空誰是to。
在這裏插入圖片描述
複製算法用在年輕代。

是什麼(原理)

在這裏插入圖片描述
在這裏插入圖片描述
java8不能超過15歲。如果你的老年代大,可以把移動到老年代的年齡降低一些。

動態演示

解釋:
在這裏插入圖片描述
分爲兩塊,籠統的說是從from區複製到to區,但是實際上是eden區+from區經過minor gc之後,倖存的對象一起移動到to區,然後之前的from區變成了to 區,誰空誰是to。
不會產生內存空間,但是空間利用率不高!
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
上圖形象的說明了這個過程。
在這裏插入圖片描述

劣勢

在這裏插入圖片描述

標記清除算法

在這裏插入圖片描述

標記整理算法也叫標記壓縮算法。

是什麼

在這裏插入圖片描述
在這裏插入圖片描述
簡單版本理解:標出垃圾,收垃圾!
節約了內存空間,但是產生了內存碎片!
在這裏插入圖片描述

在這裏插入圖片描述
耗時嚴重,是因爲這種回收算法是把線程暫停,而且需要掃描兩次!

劣勢

在這裏插入圖片描述

標記壓縮算法

也叫標記-清除-壓縮算法,標記整理算法,多一步整理的功能。
在這裏插入圖片描述

原理

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

劣勢

在這裏插入圖片描述

在這裏插入圖片描述
這種可以當作第五種gc算法。這是工作中實際使用的方法,但是不算一種新的算法。

沒有最好的算法,只有根據每一代的垃圾收集的特性,選擇算法。新生代用複製算法,老年區域用標記清除,標記整理算法。沒有最好的垃圾回收機制,只有最合適的。

總結

在這裏插入圖片描述

請你比較一下gc算法各自的優缺點,就答這個就ok了。
java9以後的默認垃圾收集器,G1垃圾回收!
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

面試題

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章