国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

JVM調(diào)優(yōu)總結(jié):分代垃圾回收詳述

開發(fā) 后端
虛擬機中的共劃分為三個代:年輕代、年老點和持久代。其中持久代主要存放的是Java類的類信息,與垃圾收集要收集的Java對象關(guān)系不大。年輕代和年老代的劃分是對垃圾收集影響比較大的。下文將進行分代垃圾回收詳述。

為什么要分代

分代的垃圾回收策略,是基于這樣一個事實:不同的對象的生命周期是不一樣的。因此,不同生命周期的對象可以采取不同的收集方式,以便提高回收效率。

在Java程序運行的過程中,會產(chǎn)生大量的對象,其中有些對象是與業(yè)務(wù)信息相關(guān),比如Http請求中的Session對象、線程、Socket連接,這類對象跟業(yè)務(wù)直接掛鉤,因此生命周期比較長。但是還有一些對象,主要是程序運行過程中生成的臨時變量,這些對象生命周期會比較短,比如:String對象,由于其不變類的特性,系統(tǒng)會產(chǎn)生大量的這些對象,有些對象甚至只用一次即可回收。

試想,在不進行對象存活時間區(qū)分的情況下,每次垃圾回收都是對整個堆空間進行回收,花費時間相對會長,同時,因為每次回收都需要遍歷所有存活對象,但實際上,對于生命周期長的對象而言,這種遍歷是沒有效果的,因為可能進行了很多次遍歷,但是他們依舊存在。因此,分代垃圾回收采用分治的思想,進行代的劃分,把不同生命周期的對象放在不同代上,不同代上采用最適合它的垃圾回收方式進行回收。

如何分代

如圖所示:

虛擬機中的共劃分為三個代:年輕代(Young Generation)、年老點(Old Generation)和持久代(Permanent Generation)。其中持久代主要存放的是Java類的類信息,與垃圾收集要收集的Java對象關(guān)系不大。年輕代和年老代的劃分是對垃圾收集影響比較大的。

年輕代:

所有新生成的對象首先都是放在年輕代的。年輕代的目標(biāo)就是盡可能快速的收集掉那些生命周期短的對象。年輕代分三個區(qū)。一個Eden區(qū),兩個Survivor區(qū)(一般而言)。大部分對象在Eden區(qū)中生成。當(dāng)Eden區(qū)滿時,還存活的對象將被復(fù)制到Survivor區(qū)(兩個中的一個),當(dāng)這個Survivor區(qū)滿時,此區(qū)的存活對象將被復(fù)制到另外一個Survivor區(qū),當(dāng)這個Survivor去也滿了的時候,從***個Survivor區(qū)復(fù)制過來的并且此時還存活的對象,將被復(fù)制“年老區(qū)(Tenured)”。需要注意,Survivor的兩個區(qū)是對稱的,沒先后關(guān)系,所以同一個區(qū)中可能同時存在從Eden復(fù)制過來 對象,和從前一個Survivor復(fù)制過來的對象,而復(fù)制到年老區(qū)的只有從***個Survivor去過來的對象。而且,Survivor區(qū)總有一個是空的。同時,根據(jù)程序需要,Survivor區(qū)是可以配置為多個的(多于兩個),這樣可以增加對象在年輕代中的存在時間,減少被放到年老代的可能。

年老代:

在年輕代中經(jīng)歷了N次垃圾回收后仍然存活的對象,就會被放到年老代中。因此,可以認為年老代中存放的都是一些生命周期較長的對象。

持久代:

用于存放靜態(tài)文件,如今Java類、方法等。持久代對垃圾回收沒有顯著影響,但是有些應(yīng)用可能動態(tài)生成或者調(diào)用一些class,例如Hibernate等,在這種時候需要設(shè)置一個比較大的持久代空間來存放這些運行過程中新增的類。持久代大小通過-XX:MaxPermSize=<N>進行設(shè)置。

什么情況下觸發(fā)垃圾回收

由于對象進行了分代處理,因此垃圾回收區(qū)域、時間也不一樣。GC有兩種類型:Scavenge GC和Full GC。

Scavenge GC

一般情況下,當(dāng)新對象生成,并且在Eden申請空間失敗時,就會觸發(fā)Scavenge GC,對Eden區(qū)域進行GC,清除非存活對象,并且把尚且存活的對象移動到Survivor區(qū)。然后整理Survivor的兩個區(qū)。這種方式的GC是對年輕代的Eden區(qū)進行,不會影響到年老代。因為大部分對象都是從Eden區(qū)開始的,同時Eden區(qū)不會分配的很大,所以Eden區(qū)的GC會頻繁進行。因而,一般在這里需要使用速度快、效率高的算法,使Eden去能盡快空閑出來。

Full GC

對整個堆進行整理,包括Young、Tenured和Perm。Full GC因為需要對整個對進行回收,所以比Scavenge GC要慢,因此應(yīng)該盡可能減少Full GC的次數(shù)。在對JVM調(diào)優(yōu)的過程中,很大一部分工作就是對于FullGC的調(diào)節(jié)。有如下原因可能導(dǎo)致Full GC:

 年老代(Tenured)被寫滿

持久代(Perm)被寫滿

System.gc()被顯示調(diào)用

上一次GC之后Heap的各域分配策略動態(tài)變化

分代垃圾回收流程示意

 

 

 

 

選擇合適的垃圾收集算法

串行收集器

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

并行收集器

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

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

此收集器可以進行如下配置:
 

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

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

并發(fā)收集器

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

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

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

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

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

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

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

小  結(jié)

串行處理器

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

◆ 缺點:只能用于小型應(yīng)用。

并行處理器:

◆ 適用情況:“對吞吐量有高要求”,多CPU、對應(yīng)用響應(yīng)時間無要求的中、大型應(yīng)用。舉例:后臺處理、科學(xué)計算。
◆ 缺點:垃圾收集過程中應(yīng)用響應(yīng)時間可能加長。

并發(fā)處理器:

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

原文鏈接:http://pengjiaheng.iteye.com/blog/524024

【編輯推薦】

  1. JVM調(diào)優(yōu)總結(jié):垃圾回收面臨的問題
  2. JVM調(diào)優(yōu)總結(jié):垃圾回收面臨的問題
  3. JVM調(diào)優(yōu)總結(jié):基本垃圾回收算法
  4. JVM調(diào)優(yōu)總結(jié):一些概念
  5. 一個Java程序員對2011年的回顧
責(zé)任編輯:林師授 來源: 和你在一起的博客
相關(guān)推薦

2012-01-09 16:53:36

JavaJVM

2012-01-10 14:25:36

JavaJVM

2012-01-09 17:06:16

JavaJVM

2017-04-25 14:39:55

JVM內(nèi)存Java

2021-11-05 15:23:20

JVM回收算法

2010-09-27 09:01:26

JVM分代垃圾回收

2010-09-26 11:22:22

JVM垃圾回收JVM

2010-01-06 09:28:08

JVM分代垃圾回收

2011-12-05 12:51:58

JVMJava

2015-07-06 10:14:25

Java垃圾回收實戰(zhàn)

2012-01-10 14:35:08

JavaJVM

2021-02-04 10:43:52

開發(fā)技能代碼

2014-12-19 11:07:40

Java

2010-01-14 11:28:54

JVM分代垃圾回收

2012-01-10 15:13:56

JavaJVM

2010-09-25 13:05:07

JVM參數(shù)

2010-09-26 13:29:46

JVM垃圾回收

2017-08-04 10:53:30

回收算法JVM垃圾回收器

2022-01-20 10:34:49

JVM垃圾回收算法

2012-01-10 14:18:40

JavaJVM
點贊
收藏

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

三级无遮挡在线观看| 天天av综合网| 欧美一区三区二区在线观看| 高清视频一区二区三区| 欧美壮男野外gaytube| 欧美日韩性生活片| 97成人精品视频在线观看| 亚洲少妇第一页| 极品销魂美女一区二区三区| 亚洲精品自拍视频| 国产剧情av在线| 丰满岳乱妇一区二区三区| 激情久久av| 久久精品福利| 一区二区三区四区在线观看国产日韩| 欧美日韩一级片网站| 成人在线免费播放视频| 四色成人av永久网址| 国产精品影视网| 蜜桃91精品入口| 伊人久久综合| 日韩**中文字幕毛片| 伊人再见免费在线观看高清版| 国产成人av| 全亚洲最色的网站在线观看| 一级欧美视频| 亚洲午夜精品久久久久久性色| 免费不卡视频| 91精品国产福利在线观看| **国产精品| 欧美老女人在线| 国产成人午夜| 在线成人直播| 日本在线观看天堂男亚洲| 成人黄色免费观看| 中文字幕av一区二区| 国产欧美一区二区精品秋霞影院 | 香蕉视频禁止18| 天堂资源中文在线| 色阁综合伊人av| av老司机免费在线| 亚洲国产精品久久久久蝴蝶传媒| 欧美视频一区在线| 婷婷五月综合缴情在线视频| 成人av在线看| 午夜精品www| 18视频在线观看网站| 成人免费网站在线观看| 亚洲视频分类| 99久久99久久| 欧美限制电影| 久久久久女教师免费一区| 亚洲男人天天操| 九色国产在线观看| 亚洲免费一区三区| www.日韩不卡电影av| 四虎影视精品| 国产精品高潮呻吟久久av黑人| 国产91精品视频在线观看| 国产视频福利在线| 在线一区av| 精品无人国产偷自产在线| 99热在线看| 国产精品一二三四五| 91精品国产网站| 女同一区二区免费aⅴ| 欧美日韩高清在线播放| 91视频免费版污| 国产做a爰片久久毛片| 豆国产96在线|亚洲| 国产二区一区| 日韩精品1区2区3区| 青娱乐自拍偷拍| 精品国产成人在线| 日本道色综合久久影院| 亚洲欧美日本国产专区一区| 第一中文字幕在线| 99精品欧美一区二区蜜桃免费| 成人动漫h在线观看| 精品久久人人做人人爽| 国产亚洲一卡2卡3卡4卡新区 | 欧美激情精品久久久久久黑人| 人人妻人人澡人人爽欧美一区| 亚洲精品国产a久久久久久| 国产超碰精品| 69堂成人精品视频免费| 午夜精品一区二区三区免费视频 | 日韩精品每日更新| 亚洲综合色视频在线观看| 美女久久久久久久| 丁香花在线电影小说观看| 国产黑人绿帽在线第一区| 久久高清国产| 免费在线午夜视频| 免费久久久一本精品久久区| 欧美剧在线免费观看网站| 一区二区日韩欧美| 久久久久久久久免费视频| 成人动漫视频在线观看完整版| 欧美偷拍一区二区| 日本在线观看不卡视频| 欧美黑人一区| 国产一级做a爰片久久| 国产成人精品久久亚洲高清不卡 | 在线观看免费毛片| 91成人理论电影| 精品伊人久久97| 久久久91精品国产一区二区三区| 波多野结衣在线一区二区| 裸体av在线| 免费久久99精品国产自| 最近的2019中文字幕免费一页| 91亚洲精品乱码久久久久久蜜桃| 444亚洲人体| 欧美色综合天天久久综合精品| 91女人视频在线观看| 天堂а√在线最新版中文在线| 午夜国产一区二区三区| 成人信息集中地欧美| 欧美亚洲愉拍一区二区| 91小视频免费看| 狠狠网亚洲精品| 蜜臀av国内免费精品久久久夜夜| 91一区二区三区| 91免费国产在线观看| 国语对白在线视频| 欧美一区二区三区在线观看视频| 成人在线电影在线观看视频| 成人三级视频在线播放| 欧美本精品男人aⅴ天堂| 久久久99久久| 自拍视频亚洲| av一级久久| 特级毛片在线| 九色在线观看| 亚洲男男gay视频| 亚洲国产日韩综合一区| 激情av综合| 日本黄色片在线观看| 日韩美女在线观看| 亚洲国产精品va在线| 7m精品国产导航在线| 麻豆mv在线看| 97人人在线视频| av在线天堂播放| 亚州精品天堂中文字幕| 欧美国产三区| 欧美高清无遮挡| 91精品国产高清一区二区三区蜜臀| 亚洲欧美乱综合| 久久精品一级| www.好吊操| 日韩一本精品| 欧美一区二区精品在线| 午夜影院在线观看欧美| 亚洲在线观看免费| 欧美日韩一区二区欧美激情| 欧美年轻男男videosbes| 欧美性受xxxx黑人xyx性爽| 天天综合天天综合色| 欧美性xxxxx极品少妇| 精品一区二区亚洲| 久久久国产精品亚洲一区| 九九精品视频在线观看| 不卡的av中国片| 国产日产精品一区| 欧美性猛交xxxx乱大交| 亚洲精品一区二区三区精华液 | 少妇一区视频| www一区二区三区| 日韩欧美黄色| 亚洲永久网站| 中文字幕免费观看一区| 欧美一区二区三区啪啪| 日韩成人性视频| 国产成人午夜高潮毛片| 亚洲乱码一区| 亚洲片区在线| 亚洲国产激情av| 在线观看av不卡| 欧美激情综合色综合啪啪五月| 国产精品一 二 三| 国精产品999国精产品官网| 性高爱久久久久久久久| 在线日韩成人| 美腿丝袜亚洲一区| 欧美日韩精品在线播放| 久久久久久网站| 亚洲欧美精品| 你懂的在线视频| 亚洲精品一级二级三级| 粉嫩av一区二区三区| 欧美日韩国产经典色站一区二区三区| 91禁外国网站| 免费看污污网站| 激情av在线| 日韩 欧美一区二区三区| 欧洲国产伦久久久久久久| 91久久国产综合久久91精品网站| 午夜精品久久久内射近拍高清|