电竞比分网-中国电竞赛事及体育赛事平台

分享

第18課:JVM垃圾回收器串行、并行、并發(fā)垃圾回收器概述

 看風(fēng)景D人 2019-04-25

內(nèi)容:

1.JVM中不同的垃圾回收器
2.穿行、并行、并發(fā)垃圾回收器概述

一、JVM中不同的垃圾回收器

    1.按照分代收集的方式,把垃圾回收器做如下的劃分:
        a)新生代收集器:Serial 、ParNew、Parallel Scavenge
        b)老年代收集器:CMS、Serial Old、Paralled Old
        c)新生代和老年代都可以使用的:G1
        詳細(xì)內(nèi)容:JVM垃圾回收器介紹
    2.Stop the world:所謂的Stop the World機(jī)制,簡稱STW,即在執(zhí)行垃圾收集算法時(shí),Java應(yīng)用程序的其他所有除了垃圾收集收集器線程之外的線程都被掛起。此時(shí),系統(tǒng)只能允許GC線程進(jìn)行運(yùn)行,其他線程則會(huì)全部暫停,等待GC線程執(zhí)行完畢后才能再次運(yùn)行。這些工作都是由虛擬機(jī)在后臺(tái)自動(dòng)發(fā)起和自動(dòng)完成的,是在用戶不可見的情況下把用戶正常工作的線程全部停下來,這對于很多的應(yīng)用程序,尤其是那些對于實(shí)時(shí)性要求很高的程序來說是難以接受的。但是有些時(shí)候?qū)τ谔摂M機(jī)來說采用Stop the world機(jī)制是無法避免的,例如采用復(fù)制算法時(shí),為了保證在復(fù)制存活的對象的時(shí)候,對象的一致性,不然要使應(yīng)用程序被掛起。但是隨著Java虛擬機(jī)的發(fā)展,HotSpot虛擬機(jī)團(tuán)隊(duì)為達(dá)到更好用戶體驗(yàn)而一直進(jìn)行著努力,不斷的對垃圾收集器進(jìn)行著改進(jìn),隨著JDK的版本的不斷更新,更好的垃圾收集器的出現(xiàn),用戶線程的停頓時(shí)間也在不斷縮短,雖然這一時(shí)間現(xiàn)階段仍然不能消除,但相信不久的未來一定會(huì)有更好的垃圾收集器被發(fā)現(xiàn),從而完全達(dá)到用戶對于虛擬機(jī)垃圾回收的性能要求。   
    3.對于很多的垃圾收集器來說,都會(huì)采用Stop the World機(jī)制來進(jìn)行垃圾回收。具體來講,在Java虛擬機(jī)的Serial, ParNew, Parallel Scanvange, ParallelOld, Serial Old全程都會(huì)Stop the world,JVM這時(shí)候只運(yùn)行GC線程,不運(yùn)行用戶線程。而CMS主要分為 initial Mark, Concurrent Mark, ReMark,Concurrent Sweep等階段,initial Mark和Remark占整體的時(shí)間比較較小,它們會(huì)Stop the world。 Concurrent Mark和Concurrent Sweep會(huì)和用戶線程一起運(yùn)行。雖然CMS減少了stop the world的次數(shù),不可避免地讓整體GC的時(shí)間拉長了。


二、串行,并行,并發(fā)垃圾回收器概述

    1.串行:jvm GC時(shí)存在一個(gè)線程
    2.并行:jvm gc時(shí)有多個(gè)線程,用多個(gè)cpu或者core同時(shí)執(zhí)行垃圾回收,優(yōu)點(diǎn)是提高了吞吐量。但是由于線程切換占用了時(shí)間,所有并行并不一定比串行好。兩者都基于stop the world。
    3.并發(fā):不用停止任務(wù),可以在gc時(shí),任務(wù)同時(shí)運(yùn)行。由此提高了效率,增加了用戶體驗(yàn)。
  

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多