国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

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

jvm垃圾回收演算法有哪些

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

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

jvm垃圾回收演算法有哪些

本教學(xué)操作環(huán)境:windows7系統(tǒng)、java8版、DELL G3電腦。

JVM垃圾回收演算法


兩個概念:

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

相同點:都在Java堆上

1.標(biāo)記–清除演算法

#執(zhí)行步驟:

  • #標(biāo)記:遍歷記憶體區(qū)域,標(biāo)記需要回收的物件。
  • 清除:再次遍歷內(nèi)存,對已經(jīng)標(biāo)記過的內(nèi)存進行回收。

圖解:

jvm垃圾回收演算法有哪些

jvm垃圾回收演算法有哪些

缺點:

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

2.複製演算法

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

圖解:

jvm垃圾回收演算法有哪些

jvm垃圾回收演算法有哪些

##優(yōu)點

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

缺點:

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

改進

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

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

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

老年代:存放新生代中經(jīng)過多次回收仍存活的物件(預(yù)設(shè)為15次)。

3. 標(biāo)記–整理演算法

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

執(zhí)行步驟:

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

圖解:

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

4. 分代收集演算法

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

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

MinorGC和FullGC的差異

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

更多程式相關(guān)知識,請造訪:程式設(shè)計影片! !

以上是jvm垃圾回收演算法有哪些的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276