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

JVM基礎(chǔ)(6)——JVM垃圾回收器簡介

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

作者簡介:大家好,我是smart哥,前中興通訊、美團架構(gòu)師,現(xiàn)某互聯(lián)網(wǎng)公司CTO

聯(lián)系qq:184480602,加我進群,大家一起學(xué)習,一起進步,一起對抗互聯(lián)網(wǎng)寒冬

學(xué)習必須往深處挖,挖的越深,基礎(chǔ)越扎實!

階段1、深入多線程

階段2、深入多線程設(shè)計模式

階段3、深入juc源碼解析

階段4、深入jdk其余源碼解析

階段5、深入jvm源碼解析

一、簡介

在新生代和老年代進行垃圾回收的時候,都需要使用回收器進行回收,不同的JVM 垃圾回收器會有所不同,不同區(qū)域一般也采用不同的垃圾回收器。JVM常見的垃圾回收器有以下幾種,我們先來簡要看下,后續(xù)會針對每一種GC專門詳細講解:

Serial/Serial Old

Serial/Serial Old收集器是最基本也是最古老的垃圾收集器,它是一個單線程收集器,并且在它進行垃圾收集時,必須暫停所有用戶線程,也就是發(fā)生“Stop the World”。一般JVM都不再使用該收集器。

ParNew

ParNew收集器是Serial收集器的多線程版本。新生代并行回收,采用復(fù)制算法,老年代串行回收,采用標記整理算法。所以,該收集器一般只用于新生代。

CMS

CMS(Current Mark Sweep)收集器,目標是使回收停頓時間最短,也是多線程機制,采用標記整理算法,該回收器一般用于老年代,生產(chǎn)環(huán)境上也經(jīng)常會使用該垃圾回收器與其它GC搭配使用。

G1

G1最大的特點是沒有物理上的新生代和老年代,它們是邏輯的,G1將整個Java堆劃分為多個大小相等的獨立區(qū)域(Region),對新生代和老年代進行統(tǒng)一收集,并且采用了更加優(yōu)秀的算法和設(shè)計機制。

二、Stop the World

2.1 何謂Stop the World

上一節(jié),我們提到過JVM在進行垃圾回收時,會掛起除GC線程以外的所有其它線程,這就會導(dǎo)致系統(tǒng)出現(xiàn)卡頓,這就是JVM所謂的?Stop the World?機制。

假設(shè)當前JVM新生代的狀態(tài)如下,Eden區(qū)已被填滿,Survivor1區(qū)存放著上一次Minor GC后的存活對象,這時候即將觸發(fā)Minor GC,由垃圾回收線程使用垃圾回收器(新生代一般使用ParNew,采用復(fù)制算法),使用特定的垃圾回收算法進行回收,如下圖:

JVM基礎(chǔ)(6)——JVM垃圾回收器簡介,jvm專題,jvm

回收時,Eden區(qū)和Survivor1區(qū)的存活對象會被轉(zhuǎn)移到Survivor2區(qū),接著Eden和Survivor1中的垃圾對象都會被回收掉:

JVM基礎(chǔ)(6)——JVM垃圾回收器簡介,jvm專題,jvm

JVM在進行垃圾回收時,會讓我們的系統(tǒng)暫停,不再創(chuàng)建新的對象,同時讓GC線程盡快完成垃圾回收的工作——即標記和轉(zhuǎn)移存活對象:

JVM基礎(chǔ)(6)——JVM垃圾回收器簡介,jvm專題,jvm

一旦本輪GC結(jié)束,就可以恢復(fù)我們的系統(tǒng)程序,繼續(xù)在Eden區(qū)創(chuàng)建新的對象了,如下圖:

JVM基礎(chǔ)(6)——JVM垃圾回收器簡介,jvm專題,jvm

三、總結(jié)

上面就是?Stop the World?的整體流程,Stop the World會導(dǎo)致客戶端的請求出現(xiàn)卡頓,短則幾百毫秒,長則幾秒甚至幾分鐘。所以,無論是Minor GC還是Full GC,都要避免頻率過高,這也是使用JVM過程中最需要關(guān)注和優(yōu)化的地方。

從下一章開始,我們將詳細講解常見的三種垃圾回收器的工作原理,不同回收器?Stop the World?的流程也有所區(qū)別,GC的核心目標其實就是降低?Stop the World?的總體時間,這也是JVM不斷演化的終極思路。文章來源地址http://www.zghlxwxcb.cn/news/detail-819265.html

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

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

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

相關(guān)文章

  • JVM之垃圾回收器

    JVM之垃圾回收器

    垃圾回收常見面試題: 如何判斷對象是否死亡。 簡單的介紹一下強引用、軟引用、弱引用、虛引用。虛引用與軟引用和弱引用的區(qū)別、使用軟引用能帶來的好處 如何判斷一個常量是廢棄常量 如何判斷一個類是無用的類 垃圾收集有哪些算法,各自的特點? HotSpot 為什么要分

    2024年02月14日
    瀏覽(25)
  • JVM垃圾回收器G1詳解

    JVM垃圾回收器G1詳解

    在我們應(yīng)用程序所應(yīng)對的業(yè)務(wù)越來越龐大、復(fù)雜,用戶越來越多,沒有GC就不能保證應(yīng)用程序正常進行,而經(jīng)常造成STW的GC又跟不上實際的需求,我們需要不斷地嘗試對GC進行優(yōu)化。G1(Garbage-First)垃圾回收器是在Java7 update4之后引入的一個新的垃圾回收器,是當今收集器技術(shù)發(fā)

    2024年02月09日
    瀏覽(20)
  • JVM常見的垃圾回收器(詳細)

    JVM常見的垃圾回收器(詳細)

    1、Young為年輕代出發(fā)的垃圾回收器。 2、Old為老觸發(fā)的垃圾回收器。 3、連線代表的是垃圾回收器的組合。CMS 和Serial Old連線代表CMS一旦不行了,Serial Old上場。 1、什么是STW? STW是Stop-The-World縮寫: 是在垃圾回收算法執(zhí)?過程當中,將JVM內(nèi)存凍結(jié)丶應(yīng)用程序停頓的?種狀態(tài)。

    2024年02月08日
    瀏覽(31)
  • Java虛擬機(JVM)、垃圾回收器

    Java虛擬機(JVM)、垃圾回收器

    JRE(Java Runtime Environment,運行環(huán)境) 所有的程序都要在JRE下才能夠運行。包括JVM和Java核心類庫和支持文件。 JDK(Java Development Kit,開發(fā)工具包) 用來編譯、調(diào)試Java程序的開發(fā)工具包。包括Java工具(javac/java/jdb等)和Java基礎(chǔ)的類庫(java API )。 JVM(Java Virtual Machine,虛擬機) JRE的一部分,

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

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

    如果說垃圾收集算法是內(nèi)存回收的方法論,那么垃圾收集器就是內(nèi)存回收的具體實現(xiàn)。下圖展示了7種作用于不同分代的收集器,其中用于回收新生代的收集器包括Serial、ParNew、Parallel Scavenge,回收老年代的收集器包括SerialOld、Parallel Old、CMS,還有用于回收整個Java堆的G1收集器

    2024年02月22日
    瀏覽(20)
  • JVM — JDK11垃圾回收器 ZGC

    JVM — JDK11垃圾回收器 ZGC

    1. ZGC介紹 ZGC(The Z Garbage Collector)是 JDK 11 中推出的一款低延遲垃圾回收器,為實現(xiàn)以下幾個目標而誕生的垃圾回收器,停頓時間不超過 10ms,停頓時間不會因堆變大而變長,支持 8MB~4TB 級別的堆(未來支持 16TB) 2. ZGC內(nèi)存和原理 2.1 ZGC內(nèi)存分布 ZGC 與傳統(tǒng)的 CMS、G1 不同、它沒

    2024年02月13日
    瀏覽(21)
  • JVM的組件、自動垃圾回收的工作原理、分代垃圾回收過程、可用的垃圾回收器類型

    JVM的組件、自動垃圾回收的工作原理、分代垃圾回收過程、可用的垃圾回收器類型

    https://www.processon.com/diagraming/64c8aa11c07d99075d934311 https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html 年輕代是所有新對象被分配和老化的地方。當年輕代填滿時,這會導(dǎo)致minor garbage collection,minor gc會回收掉很多的游離對象。游離的年輕代很快就被收集起來。一些幸存的

    2024年02月14日
    瀏覽(65)
  • java八股文面試[JVM]——垃圾回收器

    java八股文面試[JVM]——垃圾回收器

    jvm結(jié)構(gòu)總結(jié) ? 常見的垃圾回收器有哪些? ? ? CMS(Concurrent Mark Sweep) 整堆收集器 : G1 由于整個過程中 耗時最長 的 并發(fā)標記 和 并發(fā)清除 過程中,收集器線程都可以與用戶線程一起工作,所以 總體上來說 ,CMS收集器的內(nèi)存回收過程是與用戶線程一起并發(fā)地執(zhí)行。老年代收

    2024年02月11日
    瀏覽(29)
  • 【jvm系列-10】深入理解jvm垃圾回收器的種類以及內(nèi)部的執(zhí)行原理

    【jvm系列-10】深入理解jvm垃圾回收器的種類以及內(nèi)部的執(zhí)行原理

    JVM系列整體欄目 內(nèi)容 鏈接地址 【一】初識虛擬機與java虛擬機 https://blog.csdn.net/zhenghuishengq/article/details/129544460 【二】jvm的類加載子系統(tǒng)以及jclasslib的基本使用 https://blog.csdn.net/zhenghuishengq/article/details/129610963 【三】運行時私有區(qū)域之虛擬機棧、程序計數(shù)器、本地方法棧 https

    2024年02月05日
    瀏覽(31)
  • JVM | 垃圾回收器(GC)- Java內(nèi)存管理的守護者

    JVM | 垃圾回收器(GC)- Java內(nèi)存管理的守護者

    在編程世界中, 有效的內(nèi)存管理 是至關(guān)重要的。這不僅確保了應(yīng)用程序的穩(wěn)定運行,還可以大大提高性能和響應(yīng)速度。作為世界上最受歡迎的編程語言之一,通過Java虛擬機內(nèi)部的垃圾回收器組件來自動管理內(nèi)存,是成為之一的其中一項必不可少的技術(shù)點。 在許多傳統(tǒng)的編程

    2024年02月09日
    瀏覽(29)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包