JVM調優總結(六)-分代垃圾回收詳述2
轉自:http://pengjiaheng.iteye.com/blog/528034
分代垃圾回收流程示意
選擇合適的垃圾收集演算法
序列收集器
用單執行緒處理所有垃圾回收工作,因為無需多執行緒互動,所以效率比較高。但是,也無法使用多處理器的優勢,所以此收集器適合單處理器機器。當然,此收集器也可以用在小資料量(100M左右)情況下的多處理器機器上。可以使用-XX:+UseSerialGC開啟。
並行收集器
對年輕代進行並行垃圾回收,因此可以減少垃圾回收時間。一般在多執行緒多處理器機器上使用。使用-XX:+UseParallelGC.開啟。並行收集器在J2SE5.0第六6更新上引入,在Java SE6.0中進行了增強--可以對年老代進行並行收集。如果年老代不使用併發收集的話,預設是使用單執行緒進行垃圾回收,因此會制約擴充套件能力。使用-XX:+UseParallelOldGC開啟。
使用-XX:ParallelGCThreads=<N>設定並行垃圾回收的執行緒數。此值可以設定與機器處理器數量相等。
此收集器可以進行如下配置:
最大垃圾回收暫停:指定垃圾回收時的最長暫停時間,通過-XX:MaxGCPauseMillis=<N>指定。<N>為毫秒.如果指定了此值的話,堆大小和垃圾回收相關引數會進行調整以達到指定值。設定此值可能會減少應用的吞吐量。
吞吐量:吞吐量為垃圾回收時間與非垃圾回收時間的比值,通過-XX:GCTimeRatio=<N>來設定,公式為1/(1+N)。例如,-XX:GCTimeRatio=19時,表示5%的時間用於垃圾回收。預設情況為99,即1%的時間用於垃圾回收。
併發收集器
可以保證大部分工作都併發進行(應用不停止),垃圾回收只暫停很少的時間,此收集器適合對響應時間要求比較高的中、大規模應用。使用-XX:+UseConcMarkSweepGC開啟。
併發收集器主要減少年老代的暫停時間,他在應用不停止的情況下使用獨立的垃圾回收執行緒,跟蹤可達物件。在每個年老代垃圾回收週期中,在收集初期併發收集器 會對整個應用進行簡短的暫停,在收集中還會再暫停一次。第二次暫停會比第一次稍長,在此過程中多個執行緒同時進行垃圾回收工作。
併發收集器使用處理器換來短暫的停頓時間。在一個N個處理器的系統上,併發收集部分使用K/N個可用處理器進行回收,一般情況下1<=K<=N/4。
在只有一個處理器的主機上使用併發收集器,設定為incremental mode模式也可獲得較短的停頓時間。
浮動垃圾:由於在應用執行的同時進行垃圾回收,所以有些垃圾可能在垃圾回收進行完成時產生,這樣就造成了“Floating Garbage”,這些垃圾需要在下次垃圾回收週期時才能回收掉。所以,併發收集器一般需要20%的預留空間用於這些浮動垃圾。
Concurrent Mode Failure:併發收集器在應用執行時進行收集,所以需要保證堆在垃圾回收的這段時間有足夠的空間供程式使用,否則,垃圾回收還未完成,堆空間先滿了。這種情況下將會發生“併發模式失敗”,此時整個應用將會暫停,進行垃圾回收。
啟動併發收集器:因為併發收集在應用執行時進行收集,所以必須保證收集完成之前有足夠的記憶體空間供程式使用,否則會出現“Concurrent Mode Failure”。通過設定-XX:CMSInitiatingOccupancyFraction=<N>指定還有多少剩餘堆時開始執行併發收集
小結
序列處理器:
--適用情況:資料量比較小(100M左右);單處理器下並且對響應時間無要求的應用。
--缺點:只能用於小型應用
並行處理器:
--適用情況:“對吞吐量有高要求”,多CPU、對應用響應時間無要求的中、大型應用。舉例:後臺處理、科學計算。
--缺點:垃圾收集過程中應用響應時間可能加長
併發處理器:
--適用情況:“對響應時間有高要求”,多CPU、對應用響應時間有較高要求的中、大型應用。舉例:Web伺服器/應用伺服器、電信交換、整合開發環境。
相關文章
- JVM調優總結-分代垃圾回收詳述2JVM
- JVM調優總結-分代垃圾回收詳述1JVM
- JVM調優總結(五)-分代垃圾回收詳述1JVM
- JVM調優總結(九)-新一代的垃圾回收演算法JVM演算法
- JVM調優總結(三)-基本垃圾回收演算法JVM演算法
- JVM調優總結(四)-垃圾回收面臨的問題JVM
- jvm垃圾分代回收演算法JVM演算法
- JVM的垃圾回收機制詳解和調優JVM
- 【JVM】垃圾回收器總結(2)——七種垃圾回收器型別JVM型別
- JVM系列(六) – JVM垃圾回收器JVM
- JVM系列(六) - JVM垃圾回收器JVM
- JVM調優:基本垃圾回收演算法JVM演算法
- JVM 記憶體分代、垃圾回收漫談JVM記憶體
- JVM垃圾回收詳解JVM
- 【淺度渣文】JVM——簡述垃圾回收JVM
- JVM - 方法區(永久代)的垃圾回收JVM
- JVM調優總結-調優方法JVM
- JVM調優之垃圾定位、垃圾回收演算法、垃圾處理器對比JVM演算法
- JVM調優總結(十)-調優方法JVM
- JVM調優總結-典型配置舉例2JVM
- JVM垃圾回收JVM
- jvm - 垃圾回收JVM
- [JVM]垃圾回收JVM
- ☕【JVM技術指南】「JVM總結筆記」Java虛擬機器垃圾回收認知和調優的"思南(司南)"【下部】JVM筆記Java虛擬機
- JVM調優總結(八)-典型配置舉例2JVM
- Java垃圾回收調優實戰Java
- JVM調優總結(十一)-反思JVM
- GC 分代回收 - 垃圾收集器GC
- JVM原理講解和調優,記憶體管理和垃圾回收,記憶體調優JVM記憶體
- 從原理聊JVM(三):詳解現代垃圾回收器Shenandoah和ZGCJVMNaNGC
- JVM垃圾回收概述JVM
- JVM垃圾回收(下)JVM
- JVM - 垃圾回收概述JVM
- JVM垃圾回收器JVM
- JVM調優:HotSpot JVM垃圾收集器JVMHotSpot
- 【JVM進階之路】十:JVM調優總結JVM
- JVM之垃圾回收機制詳解分析JVM
- 垃圾回收器總結(一)