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

Jvm對象回收算法-JVM(九)

這篇具有很好參考價值的文章主要介紹了Jvm對象回收算法-JVM(九)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

上篇文章介紹了jvm運行時候?qū)ο筮M(jìn)入老年代的場景,以及如何避免頻繁fullGC。

Jvm參數(shù)設(shè)置-JVM(八)
  • 老年代分配擔(dān)保機(jī)制

這個機(jī)制的目的是為了提升效率,在minorGC之前,會有三次判斷,之后再次minorGC速度會很快。

  1. 老年代剩余空間是否 大于 年輕代里現(xiàn)在所有對象

大于的話則直接minorGC

  1. 如果不大于則看看參數(shù)是否配置:-XX:-HandlerPromotionFailure

沒有配置則直接fullGC

  1. 配置了則看看 老年代剩余可用空間是否 大于 每次minorGC后進(jìn)入老年代的平均值

大于的話直接minorGC,否則直接fullGC

FullGC之后最后還是會minorGC。

  • 對象內(nèi)存回收
  1. 引用計數(shù)器

這個方法簡單效率高,但目前主流虛擬機(jī)沒有用表格這個算法,主要不能解決循環(huán)引用問題。因為兩者相互引用,導(dǎo)致他們引用計數(shù)器不為0,而引用計數(shù)器必須是為0才會回收。

Jvm對象回收算法-JVM(九),后端,jvm,算法

?

  1. 可達(dá)性分析算法

將GC roots對象作為節(jié)點,向下搜索,找到對象都標(biāo)記為 非垃圾對象,其余未標(biāo)記的都是 垃圾對象。

GC roots根節(jié)點,:線程棧本地變量,靜態(tài)變量,本地方法棧變量等。

  • 常見引用類型

引用類型:強引用,軟引用,弱引用,虛引用

  1. 強引用:User user = new User();
  2. 軟引用:用SoftReference軟引用類型包裹對象, 正常不會被回收,但GC做完釋放不出空間放新對象,則會回收。軟引用可以作用在內(nèi)存敏感的高速緩存。

SoftReference<User> user = new SoftReference<User>(new User());

軟引用在實際場景很重要,例如瀏覽器后退按鈕,這個后退是重新加載還是從緩存里取,這要看實際應(yīng)用場景。

  1. 如果一個瀏覽器進(jìn)入新頁面就內(nèi)容回收,則需要重新加載。
  2. 如果瀏覽頁面內(nèi)存很大,放在內(nèi)存會內(nèi)存溢出。
  1. 弱引用GC每次會直接回收。

WeakReference<User> user = new WeakReference<User>(new User());

  1. 虛引用也成為幽靈引用,幾乎不用。
  • finalize()方法最終判斷對象是否存活

當(dāng)對象背回收之前,會判斷這個對象是否覆蓋了finalize方法,如果覆蓋了,在回收之前則會執(zhí)行這個方法,不回收則不執(zhí)行。

既然在回收之前會執(zhí)行,那么自然可以自救,可以把當(dāng)前對象放入靜態(tài)list集合保證在使用則不會被收回。(不推薦使用)

  • 如何判斷一個類是無用的類

方法區(qū)如果發(fā)生回收的條件,必須這個類是無用的類:

  1. 該類所有對象實例都被回收,也就是java堆中不存在該類任何實例。
  2. 加載該類的ClassLoader已經(jīng)被回收。(CLassLoader回收條件很苛刻)

前面說過引導(dǎo)類(核心包)BootStrapClassLoader,擴(kuò)展ClassLoader以及appClassLoader應(yīng)用程序的classLoader,這些不會被回收。

但是jsp的加載器,每個jsp都對應(yīng)一個新的加載器,這種加載器就很容易被回收。(一般自定義的才會回收)文章來源地址http://www.zghlxwxcb.cn/news/detail-544676.html

  1. 該類的java.lang.Class對象沒有地方被引用,無法在任何地方通過反射訪問該類信息。

到了這里,關(guān)于Jvm對象回收算法-JVM(九)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • JVM 垃圾回收詳解之內(nèi)存分配和回收原則+死亡對象判斷方法

    JVM 垃圾回收詳解之內(nèi)存分配和回收原則+死亡對象判斷方法

    當(dāng)需要排查各種內(nèi)存溢出問題、當(dāng)垃圾收集成為系統(tǒng)達(dá)到更高并發(fā)的瓶頸時,我們就需要對這些“自動化”的技術(shù)實施必要的監(jiān)控和調(diào)節(jié)。 Java 的自動內(nèi)存管理主要是針對對象內(nèi)存的回收和對象內(nèi)存的分配。同時,Java 自動內(nèi)存管理最核心的功能是 堆 內(nèi)存中對象的分配與回收

    2023年04月19日
    瀏覽(40)
  • JVM---垃圾回收算法介紹

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

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

    【JVM】垃圾回收算法

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

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

    JVM主要通過以下幾種方式來判斷對象是否需要回收: 引用計數(shù)法:JVM通過引用計數(shù)器來判斷對象的引用數(shù)量,當(dāng)引用數(shù)量為0時,表示對象可以被回收。 可達(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)
  • 【JVM篇】有哪些垃圾回收算法

    【JVM篇】有哪些垃圾回收算法

    主要分為下面2個階段 標(biāo)記階段,將所有存活的對象進(jìn)行標(biāo)記。Java中使用可達(dá)性分析算法,從GC Root開始通過引用鏈遍歷出所有存活對象 清除階段,從內(nèi)存中刪除沒有被標(biāo)記的對象(非存活對象) 優(yōu)點:實現(xiàn)簡單,只需要在第一階段給每個對象維護(hù)標(biāo)志位,第二階段刪除對象

    2024年02月21日
    瀏覽(21)
  • JVM-垃圾回收(標(biāo)記算法,收集器)

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

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

    2024年02月21日
    瀏覽(31)
  • 說一下 JVM 有哪些垃圾回收算法?

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

    標(biāo)記無用對象,然后進(jìn)行清除回收。 標(biāo)記-清除算法(Mark-Sweep)是一種常見的基礎(chǔ)垃圾收集算法,它將垃圾收集分為兩個階段: 標(biāo)記階段:標(biāo)記出可以回收的對象。 清除階段:回收被標(biāo)記的對象所占用的空間。 標(biāo)記-清除算法之所以是基礎(chǔ)的,是因為后面講到的垃圾收集算法

    2024年02月22日
    瀏覽(21)
  • JVM——垃圾回收(垃圾回收算法+分代垃圾回收+垃圾回收器)

    JVM——垃圾回收(垃圾回收算法+分代垃圾回收+垃圾回收器)

    只要一個對象被其他對象所引用,就要讓該對象的技術(shù)加1,某個對象不再引用其,則讓它計數(shù)減1。當(dāng)計數(shù)變?yōu)?時就可以作為垃圾被回收。 有一個弊端叫做循環(huán)引用,兩個的引用計數(shù)都是1,導(dǎo)致不能作為垃圾回收,會造成內(nèi)存泄露。 java虛擬機(jī)沒有采用該算法。 該算法需要

    2024年02月12日
    瀏覽(18)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包