目錄
JVM垃圾回收演算法
首頁 Java Java入門 jvm垃圾回收演算法有哪些

jvm垃圾回收演算法有哪些

Apr 22, 2021 pm 02:58 PM
jvm垃圾回收演算法

jvm垃圾回收演算法:1、「標記–清除」演算法;先標記所有需要被回收的對象,然後在標記完成後統一回收所有被標記的對象。 2.複製演算法;將記憶體分割成等大的兩塊,每次只使用其中的一塊。 3.「標記–整理」演算法;4、分代收集演算法。

jvm垃圾回收演算法有哪些

本教學操作環境:windows7系統、java8版、DELL G3電腦。

JVM垃圾回收演算法


兩個概念:

##。新生代:存放生命週期較短的物件的區域。 老年代:存放生命週期較長的物件的區域。

相同點:都在Java堆上

1.標記–清除演算法

#執行步驟:

  • #標記:遍歷記憶體區域,標記需要回收的物件。
  • 清除:再次遍歷內存,對已經標記過的內存進行回收。

圖解:

jvm垃圾回收演算法有哪些

jvm垃圾回收演算法有哪些

缺點:

  • 效率問題;遍歷了兩次記憶體空間(第一次標記,第二次清除)。
  • 空間問題:容易產生大量記憶體碎片,當再需要一塊比較大的記憶體時,無法找到一塊符合要求的,因而不得不再次出發GC。

2.複製演算法

#將記憶體分割成等大的兩塊,每次只使用其中的一塊。當一塊用完了,觸發GC時,將該區塊中存活的物件複製到另一塊區域,然後一次清理掉這塊沒有用的記憶體。下次觸發GC時將那塊中存活的的又複製到這塊,然後抹掉那塊,循環往復。

圖解:

jvm垃圾回收演算法有哪些

jvm垃圾回收演算法有哪些

##優點

  • #相對於標記–清理演算法解決了記憶體的碎片化問題。
  • 效率更高(清理記憶體時,記住首尾位址,一次抹掉)。

缺點:

  • 記憶體使用率不高,每次只能使用一半記憶體。

改進

研究表明,新生代中的物件大都是「朝生夕死」的,即生命週期非常短而且對象活得越久則越難被回收。在發生GC時,需要回收的物件特別多,存活的特別少,因此需要移到另一塊記憶體的物件非常少,所以不需要1:1分割記憶體空間。而是將整個新生代依照8 : 1 : 1的比例分成三塊,最大的稱為Eden(伊甸園)區,較小的兩塊分別稱為To Survivor和From Survivor。

首次GC時,只需要將Eden存活的物件複製到To。然後將Eden區整體回收。再次GC時,將Eden和To存活的複製到From,循環往復這個過程。這樣每次新生代中可用的記憶體就佔整個新生代的90%,大大提高了記憶體使用率。 【相關推薦:Java影片教學

但無法保證每次存活的物件就永遠少於新生代整體的10%,此時複製過去是存不下的,因此這裡會用到另一塊內存,稱為老年代,進行分配擔保,將物件儲存到老年代。若還不夠,就會拋出OOM。

老年代:存放新生代中經過多次回收仍存活的物件(預設為15次)。

3. 標記–整理演算法

#因為前面的複製演算法當物件的存活率比較高時,這樣一直複製過來,複製過去,沒啥意義,且浪費時間。所以針對老年代提出了「標記整理」演算法。

執行步驟:

  • 標記:標記需要回收的
  • #:讓存活的對象,向記憶體的一端移動,然後直接清除沒有用的記憶體。

圖解:

jvm垃圾回收演算法有哪些jvm垃圾回收演算法有哪些

4. 分代收集演算法

目前大多商用虛擬機都採用這種分代收集演算法,這個演算法並沒有新的內容,只是根據物件的存活的時間的長短,將記憶體分為了新生代和老年代,這樣就可以針對不同的區域,採取對應的演算法。如:

  • 新生代,每次都有大量物件死亡,有老年代作為記憶體擔保,採取複製演算法。
  • 老年代,物件存活時間長,採用標記整理,或標記清理演算法都可。

MinorGC和FullGC的差異

#MinorGC:發生在新生代的垃圾回收,因為新生代的特點,MinorGC非常頻繁,且回收速度比較快,每次回收的量也很大。
FullGC:發生在老年代的垃圾回收,也稱為MajorGC,速度比較慢,相對於MinorGc慢10倍左右。進行一次FullGC通常伴隨多次多次MinorGC,。

更多程式相關知識,請造訪:程式設計影片! !

以上是jvm垃圾回收演算法有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24