您好,登錄后才能下訂單哦!
java的jvm垃圾收集算法有哪些算法?一般大家對jvm垃圾收集算法了解可能停留在概念的層面上,而對于jvm具體有哪些算法了解相對較少。今天就跟大家聊聊jvm垃圾收集算法的主要算法。
從圖中可以看出這種算法的缺點在于,垃圾被回收以后造成了大量不連續的內存碎片。碎片太多可能會導致以后需要分配較大對象時,無法找到連續的足夠內存從而頻繁觸發垃圾收集,降低系統效率。
復制算法:為了解決“標記,清除”算法的問題一種被稱為復制的算法出現了,它將內存平均分為兩塊,每次只使用其中一塊,當這一塊存滿時觸發垃圾收集,將還存活的對象復制到另一塊內存,然后將這塊內存清掉,這樣就不會存在內存碎片的問題。
標記整理算法:
復制算法在存活對象較多的時候需要復制的操作也較多,最關鍵的是只能利用一半的內存,標記整理算法可以解決這個問題,標記整理算法中的標記和標記清除算法一樣,要被回收的對象找出來以后讓所有存活的對象向一端移動,然后將內存的剩余部分直接清理掉。
為什么需要兩塊Survivor區?
為了避免內存碎片化的問題,大家想想復制算法是如何解決標記清除算法的內存碎片化問題的,將內存分為大小相等的兩塊,將存活的對象復制到另一塊內存,這里也是一樣的道理。
老年代:
因為老年代中對象的生命力比較頑強,如果采用復制算法那些存活的對象需要被復制很多次,所以老年代采用的是標記整理算法。
什么樣的對象會進入老年代呢?
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。