成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

圖解JVM分代垃圾回收流程與算法的選擇

開發(fā) 后端 算法
本文對JVM的分代垃圾回收進(jìn)行了詳細(xì)的圖解。JVM的垃圾收集有三種收集器:串行,并行以及并發(fā)收集器。文章對如何選擇合適的垃圾收集算法也進(jìn)行了詳細(xì)的圖解和介紹。

本文來自和你在一起的博客,介紹JVM的分代垃圾回收流程,并比較了不同的垃圾收集算法。

分代垃圾回收流程示意

分代垃圾回收流程 

分代垃圾回收流程 

分代垃圾回收流程 

分代垃圾回收流程 

#p#

選擇合適的垃圾收集算法

串行收集器

串行收集器 

用單線程處理所有垃圾回收工作,因?yàn)闊o需多線程交互,所以效率比較高。但是,也無法使用多處理器的優(yōu)勢,所以此收集器適合單處理器機(jī)器。當(dāng)然,此收集器也可以用在小數(shù)據(jù)量(100M左右)情況下的多處理器機(jī)器上。可以使用-XX:+UseSerialGC打開。

并行收集器

并行收集器

對年輕代進(jìn)行并行垃圾回收,因此可以減少垃圾回收時(shí)間。一般在多線程多處理器機(jī)器上使用。使用-XX:+UseParallelGC.打開。并行收集器在J2SE5.0第六6更新上引入,在Java SE6.0中進(jìn)行了增強(qiáng)--可以對年老代進(jìn)行并行收集。如果年老代不使用并發(fā)收集的話,默認(rèn)是使用單線程進(jìn)行垃圾回收,因此會(huì)制約擴(kuò)展能力。使用-XX:+UseParallelOldGC打開。

使用-XX:ParallelGCThreads=<N>設(shè)置并行垃圾回收的線程數(shù)。此值可以設(shè)置與機(jī)器處理器數(shù)量相等。

此收集器可以進(jìn)行如下配置:

最大垃圾回收暫停:指定垃圾回收時(shí)的最長暫停時(shí)間,通過-XX:MaxGCPauseMillis=<N>指定。<N>為毫秒.如果指定了此值的話,堆大小和垃圾回收相關(guān)參數(shù)會(huì)進(jìn)行調(diào)整以達(dá)到指定值。設(shè)定此值可能會(huì)減少應(yīng)用的吞吐量。

吞吐量:吞吐量為垃圾回收時(shí)間與非垃圾回收時(shí)間的比值,通過-XX:GCTimeRatio=<N>來設(shè)定,公式為1/(1+N)。例如,-XX:GCTimeRatio=19時(shí),表示5%的時(shí)間用于垃圾回收。默認(rèn)情況為99,即1%的時(shí)間用于垃圾回收。

并發(fā)收集器

可以保證大部分工作都并發(fā)進(jìn)行(應(yīng)用不停止),垃圾回收只暫停很少的時(shí)間,此收集器適合對響應(yīng)時(shí)間要求比較高的中、大規(guī)模應(yīng)用。使用-XX:+UseConcMarkSweepGC打開。

并發(fā)收集器

并發(fā)收集器主要減少年老代的暫停時(shí)間,他在應(yīng)用不停止的情況下使用獨(dú)立的垃圾回收線程,跟蹤可達(dá)對象。在每個(gè)年老代垃圾回收周期中,在收集初期并發(fā)收集器 會(huì)對整個(gè)應(yīng)用進(jìn)行簡短的暫停,在收集中還會(huì)再暫停一次。第二次暫停會(huì)比第一次稍長,在此過程中多個(gè)線程同時(shí)進(jìn)行垃圾回收工作。

并發(fā)收集器使用處理器換來短暫的停頓時(shí)間。在一個(gè)N個(gè)處理器的系統(tǒng)上,并發(fā)收集部分使用K/N個(gè)可用處理器進(jìn)行回收,一般情況下1<=K<=N/4。

在只有一個(gè)處理器的主機(jī)上使用并發(fā)收集器,設(shè)置為incremental mode模式也可獲得較短的停頓時(shí)間。

浮動(dòng)垃圾:由于在應(yīng)用運(yùn)行的同時(shí)進(jìn)行垃圾回收,所以有些垃圾可能在垃圾回收進(jìn)行完成時(shí)產(chǎn)生,這樣就造成了“Floating Garbage”,這些垃圾需要在下次垃圾回收周期時(shí)才能回收掉。所以,并發(fā)收集器一般需要20%的預(yù)留空間用于這些浮動(dòng)垃圾。

Concurrent Mode Failure:并發(fā)收集器在應(yīng)用運(yùn)行時(shí)進(jìn)行收集,所以需要保證堆在垃圾回收的這段時(shí)間有足夠的空間供程序使用,否則,垃圾回收還未完成,堆空間先滿了。這種情況下將會(huì)發(fā)生“并發(fā)模式失敗”,此時(shí)整個(gè)應(yīng)用將會(huì)暫停,進(jìn)行垃圾回收。

啟動(dòng)并發(fā)收集器:因?yàn)椴l(fā)收集在應(yīng)用運(yùn)行時(shí)進(jìn)行收集,所以必須保證收集完成之前有足夠的內(nèi)存空間供程序使用,否則會(huì)出現(xiàn)“Concurrent Mode Failure”。通過設(shè)置-XX:CMSInitiatingOccupancyFraction=<N>指定還有多少剩余堆時(shí)開始執(zhí)行并發(fā)收集

小結(jié)

串行處理器:

#t#--適用情況:數(shù)據(jù)量比較小(100M左右);單處理器下并且對響應(yīng)時(shí)間無要求的應(yīng)用。

--缺點(diǎn):只能用于小型應(yīng)用

并行處理器:

--適用情況:“對吞吐量有高要求”,多CPU、對應(yīng)用響應(yīng)時(shí)間無要求的中、大型應(yīng)用。舉例:后臺處理、科學(xué)計(jì)算。

--缺點(diǎn):垃圾收集過程中應(yīng)用響應(yīng)時(shí)間可能加長

并發(fā)處理器:

--適用情況:“對響應(yīng)時(shí)間有高要求”,多CPU、對應(yīng)用響應(yīng)時(shí)間有較高要求的中、大型應(yīng)用。舉例:Web服務(wù)器/應(yīng)用服務(wù)器、電信交換、集成開發(fā)環(huán)境。

責(zé)任編輯:yangsai 來源: JavaEye博客
相關(guān)推薦

2021-11-05 15:23:20

JVM回收算法

2017-04-25 14:39:55

JVM內(nèi)存Java

2010-09-27 09:01:26

JVM分代垃圾回收

2017-08-04 10:53:30

回收算法JVM垃圾回收器

2011-12-05 12:51:58

JVMJava

2010-01-06 09:28:08

JVM分代垃圾回收

2012-01-10 11:19:35

JavaJVM

2010-09-26 13:29:46

JVM垃圾回收

2022-03-21 11:33:11

JVM垃圾回收器垃圾回收算法

2022-01-20 10:34:49

JVM垃圾回收算法

2009-12-25 16:15:31

JVM垃圾回收算法

2012-01-10 14:25:36

JavaJVM

2022-06-10 07:13:29

JVM垃圾回收

2012-01-09 16:53:36

JavaJVM

2022-06-22 09:54:45

JVM垃圾回收Java

2009-12-30 10:14:29

JVM垃圾回收

2023-08-08 10:29:55

JVM優(yōu)化垃圾回收

2025-01-06 08:22:41

2021-02-04 10:43:52

開發(fā)技能代碼

2023-08-27 21:29:43

JVMFullGC調(diào)優(yōu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久久久久免费观看 | 人人玩人人添人人澡欧美 | 青青久久久| 国产精品久久9 | 九九热免费在线观看 | 日本黄色大片免费看 | 国产日产久久高清欧美一区 | 欧美二区三区 | 欧美精品一区二区三区四区五区 | 久久精品一区二区三区四区 | 久久久成人一区二区免费影院 | 亚洲人成人一区二区在线观看 | 欧洲亚洲一区二区三区 | 一级黄色片免费 | 久久精品二区亚洲w码 | 午夜网站视频 | 日本国产欧美 | 日韩成人在线播放 | 国产高清区 | 欧美中文字幕在线观看 | 精品美女久久久 | 亚洲婷婷一区 | av在线一区二区三区 | 91嫩草精品 | 国产传媒在线播放 | 久久久久国产精品www | 久久久久久国产精品免费免费 | 激情免费视频 | 精品中文字幕在线观看 | 日韩成人在线观看 | 亚洲国产aⅴ成人精品无吗 亚洲精品久久久一区二区三区 | 精品久久久久久亚洲精品 | 亚洲一区在线播放 | 久久亚洲精品国产精品紫薇 | 一级免费在线视频 | 日韩一级免费观看 | 国产一区三区在线 | 色噜噜狠狠色综合中国 | 天堂综合| 国产综合在线视频 | 91精品国产91久久综合桃花 |