国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

說一下 JVM 有哪些垃圾回收算法?

這篇具有很好參考價(jià)值的文章主要介紹了說一下 JVM 有哪些垃圾回收算法?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、標(biāo)記-清除算法


標(biāo)記無用對象,然后進(jìn)行清除回收。
標(biāo)記-清除算法(Mark-Sweep)是一種常見的基礎(chǔ)垃圾收集算法,它將垃圾收集分為兩個(gè)階段:

  • 標(biāo)記階段:標(biāo)記出可以回收的對象。
  • 清除階段:回收被標(biāo)記的對象所占用的空間。

標(biāo)記-清除算法之所以是基礎(chǔ)的,是因?yàn)楹竺嬷v到的垃圾收集算法都是在此算法的基礎(chǔ)上進(jìn)行改進(jìn)的。
優(yōu)點(diǎn):實(shí)現(xiàn)簡單,不需要對象進(jìn)行移動。
缺點(diǎn):標(biāo)記、清除過程效率低,產(chǎn)生大量不連續(xù)的內(nèi)存碎片,提高了垃圾回收的頻率。


標(biāo)記-清除算法的執(zhí)行的過程如下圖所示
說一下 JVM 有哪些垃圾回收算法?,生平不知JVM,學(xué)遍八股也枉然,jvm,算法,面試,java

二、復(fù)制算法

為了解決標(biāo)記-清除算法的效率不高的問題,產(chǎn)生了復(fù)制算法。它把內(nèi)存空間劃為兩個(gè)相等的區(qū)域,每次只使用其中一個(gè)區(qū)域。垃圾收集時(shí),遍歷當(dāng)前使用的區(qū)域,把存活對象復(fù)制到另外一個(gè)區(qū)域中,最后將當(dāng)前使用的區(qū)域的可回收的對象進(jìn)行回收。

優(yōu)點(diǎn):按順序分配內(nèi)存即可,實(shí)現(xiàn)簡單、運(yùn)行高效,不用考慮內(nèi)存碎片。
缺點(diǎn):可用的內(nèi)存大小縮小為原來的一半,對象存活率高時(shí)會頻繁進(jìn)行復(fù)制。

復(fù)制算法的執(zhí)行過程如下圖所示

說一下 JVM 有哪些垃圾回收算法?,生平不知JVM,學(xué)遍八股也枉然,jvm,算法,面試,java

三、標(biāo)記-整理算法

在新生代中可以使用復(fù)制算法,但是在老年代就不能選擇復(fù)制算法了,因?yàn)槔夏甏膶ο蟠婊盥蕰^高,這樣會有較多的復(fù)制操作,導(dǎo)致效率變低。標(biāo)記-清除算法可以應(yīng)用在老年代中,但是它效率不高,在內(nèi)存回收后容易產(chǎn)生大量內(nèi)存碎片。

因此就出現(xiàn)了一種標(biāo)記-整理算法(Mark-Compact)算法,與標(biāo)記-清除算法不同的是,在標(biāo)記可回收的對象后將所有存活的對象壓縮到內(nèi)存的一端,使他們緊湊的排列在一起,然后對端邊界以外的內(nèi)存進(jìn)行回收?;厥蘸螅延煤臀从玫膬?nèi)存都各自一邊。

優(yōu)點(diǎn):解決了標(biāo)記-清理算法存在的內(nèi)存碎片問題。
缺點(diǎn):仍需要進(jìn)行局部對象移動,一定程度上降低了效率。
標(biāo)記-整理算法的執(zhí)行過程如下圖所示
說一下 JVM 有哪些垃圾回收算法?,生平不知JVM,學(xué)遍八股也枉然,jvm,算法,面試,java

四、分代收集算法

分代收集法是目前大部分 JVM 所采用的方法,其核心思想是根據(jù)對象存活的不同生命周期將內(nèi)存劃分為不同的域,一般情況下將 GC 堆劃分為老生代(Tenured/Old Generation)和新生代
(YoungGeneration)。

老生代的特點(diǎn)是每次垃圾回收時(shí)只有少量對象需要被回收,新生代的特點(diǎn)是每次垃圾回收時(shí)都有大量垃圾需要被回收,因此可以根據(jù)不同區(qū)域選擇不同的算法。
當(dāng)前商業(yè)虛擬機(jī)都采用分代收集的垃圾收集算法。分代收集算法,顧名思義是根據(jù)對象的存活周期將內(nèi)存劃分為幾塊。一般包括年輕代、老年代 和 永久代,如圖所示:


說一下 JVM 有哪些垃圾回收算法?,生平不知JVM,學(xué)遍八股也枉然,jvm,算法,面試,java

當(dāng)前主流 VM 垃圾收集都采用”分代收集” (Generational Collection)算法, 這種算法會根據(jù)對象存活周期的不同將內(nèi)存劃分為幾塊, 如 JVM 中的 新生代、老年代、永久代, 這樣就可以根據(jù)各年代特點(diǎn)分別采用最適當(dāng)?shù)?GC 算法

新生代: 復(fù)制算法

老年代:標(biāo)記-整理算法


?文章來源地址http://www.zghlxwxcb.cn/news/detail-835042.html

到了這里,關(guān)于說一下 JVM 有哪些垃圾回收算法?的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【JVM】JVM 垃圾回收算法

    【JVM】JVM 垃圾回收算法

    目前JVM中有三種常見的垃圾回收算法,分別是:標(biāo)記清除、標(biāo)記整理和復(fù)制,這三種垃圾回收算法各有優(yōu)缺點(diǎn),下面逐一介紹。 在讀本篇文章中,如果對JVM中哪個(gè)是垃圾,哪個(gè)不是垃圾,JVM到底是怎么知道的,請先讀下面這篇文章 【JVM】JVM 判斷對象存活算法(引用計(jì)數(shù)算法

    2024年02月09日
    瀏覽(26)
  • JVM基礎(chǔ)(5)——JVM垃圾回收算法

    JVM基礎(chǔ)(5)——JVM垃圾回收算法

    作者簡介:大家好,我是smart哥,前中興通訊、美團(tuán)架構(gòu)師,現(xiàn)某互聯(lián)網(wǎng)公司CTO 聯(lián)系qq:184480602,加我進(jìn)群,大家一起學(xué)習(xí),一起進(jìn)步,一起對抗互聯(lián)網(wǎng)寒冬 學(xué)習(xí)必須往深處挖,挖的越深,基礎(chǔ)越扎實(shí)! 階段1、深入多線程 階段2、深入多線程設(shè)計(jì)模式 階段3、深入juc源碼解析

    2024年02月02日
    瀏覽(30)
  • JVM---垃圾回收算法介紹

    目錄 分代收集理論 三種垃圾回收算法 標(biāo)記-清除算法(最基礎(chǔ)的、基本不用) 標(biāo)記-復(fù)制算法 標(biāo)記-整理算法 正式因?yàn)閖vm有了垃圾回收機(jī)制,作為java開發(fā)者不會去特備關(guān)注內(nèi)存,不像C和C++。 優(yōu)點(diǎn) :開發(fā)門檻低、安全 缺點(diǎn) :性能問題。c和c++可以自己操控內(nèi)存等,性能更高

    2024年02月12日
    瀏覽(23)
  • 【JVM】垃圾回收算法

    【JVM】垃圾回收算法

    標(biāo)記-清除算法將垃圾回收分為兩個(gè)階段,標(biāo)記階段和清除階段 在標(biāo)記階段首先通過GC Roots,標(biāo)記所有從根節(jié)點(diǎn)開始的對象,未被標(biāo)記的對象就是未引用的垃圾對象。然后,在清除階段,清除未被標(biāo)記的對象。 適合場景: 1、存活對象較多的情況下比較高效 2、使用于老年代

    2024年01月16日
    瀏覽(66)
  • jvm垃圾回收相關(guān)的算法

    JVM主要通過以下幾種方式來判斷對象是否需要回收: 引用計(jì)數(shù)法:JVM通過引用計(jì)數(shù)器來判斷對象的引用數(shù)量,當(dāng)引用數(shù)量為0時(shí),表示對象可以被回收。 可達(dá)性分析算法:JVM通過根對象(如棧中的引用、靜態(tài)變量等)出發(fā),對對象進(jìn)行可達(dá)性分析,判斷對象是否可被訪問到,

    2024年02月02日
    瀏覽(25)
  • JVM之三大垃圾回收算法

    JVM之三大垃圾回收算法

    提示:這里可以添加本文要記錄的大概內(nèi)容: 例如:隨著人工智能的不斷發(fā)展,機(jī)器學(xué)習(xí)這門技術(shù)也越來越重要,很多人都開啟了學(xué)習(xí)機(jī)器學(xué)習(xí),本文就介紹了機(jī)器學(xué)習(xí)的基礎(chǔ)內(nèi)容。 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 復(fù)制算法的核心就是, 將原有的內(nèi)存空

    2024年02月14日
    瀏覽(25)
  • 【Java】圖解 JVM 垃圾回收(一):GC 判斷策略、引用類型、垃圾回收算法

    【Java】圖解 JVM 垃圾回收(一):GC 判斷策略、引用類型、垃圾回收算法

    垃圾 是指運(yùn)行程序中 沒有任何引用指向的對象 ,需要被回收。 內(nèi)存溢出 :經(jīng)過垃圾回收之后,內(nèi)存仍舊無法存儲新創(chuàng)建的對象,內(nèi)存不夠溢出。 內(nèi)存泄漏 :又叫 “ 存儲泄漏 ”,對象不會再被程序使用了,但是 GC 又不能回收它們。例如:IO 流不適用了但是沒有被 Close、

    2024年02月19日
    瀏覽(26)
  • JVM垃圾回收算法和CMS垃圾收集器

    JVM垃圾回收算法和CMS垃圾收集器

    目錄 判斷一個(gè)對象是否死亡? 1、引用計(jì)數(shù)法? 2、可達(dá)性分析算法 三色標(biāo)記 垃圾收集算法 1、分代收集理論? 2、垃圾回收算法 標(biāo)記-清除 標(biāo)記-復(fù)制 標(biāo)記-整理 CMS(Concurrent Mark Sweep)收集器 CMS垃圾收集器步驟 CMS垃圾收集器優(yōu)缺點(diǎn) 垃圾收集需要完成的三件事情: 哪些內(nèi)存需

    2024年02月10日
    瀏覽(27)
  • JVM學(xué)習(xí) GC垃圾回收機(jī)制 (堆內(nèi)存結(jié)構(gòu)、GC分類、四大垃圾回收算法)

    JVM學(xué)習(xí) GC垃圾回收機(jī)制 (堆內(nèi)存結(jié)構(gòu)、GC分類、四大垃圾回收算法)

    ?? 作者簡介: 努力的clz ,一個(gè)努力編程的菜鳥 ?????? ? ?? 文章專欄: 《JVM 學(xué)習(xí)筆記》 ,本專欄會專門記錄博主在學(xué)習(xí) JVM 中學(xué)習(xí)的知識點(diǎn),以及遇到的問題。 ? ?? 文章詳情: 本篇博客是學(xué)習(xí) 【狂神說Java】JVM快速入門篇 的學(xué)習(xí)筆記,關(guān)于 GC垃圾回收機(jī)制 (堆內(nèi)存結(jié)

    2023年04月19日
    瀏覽(24)
  • JVM-垃圾回收(標(biāo)記算法,收集器)

    JVM-垃圾回收(標(biāo)記算法,收集器)

    申明:文章內(nèi)容是本人學(xué)習(xí)極客時(shí)間課程所寫,文字和圖片基本來源于課程資料,在某些地方會插入一點(diǎn)自己的理解,未用于商業(yè)用途,侵刪。 原資料地址:課程資料 垃圾回收的基本原理 1 什么是垃圾? 在內(nèi)存中,沒有被引用的對象就是垃圾。 2 如果找到垃圾對象? 引用計(jì)

    2024年02月21日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包