JVM調優總結(三)-基本垃圾回收演算法
轉自:http://pengjiaheng.iteye.com/blog/520228
可以從不同的的角度去劃分垃圾回收演算法:
按照基本回收策略分
引用計數(Reference Counting):
比較古老的回收演算法。原理是此物件有一個引用,即增加一個計數,刪除一個引用則減少一個計數。垃圾回收時,只用收集計數為0的物件。此演算法最致命的是無法處理迴圈引用的問題。
標記-清除(Mark-Sweep):
此演算法執行分兩階段。第一階段從引用根節點開始標記所有被引用的物件,第二階段遍歷整個堆,把未標記的物件清除。此演算法需要暫停整個應用,同時,會產生記憶體碎片。
複製(Copying):
此演算法把記憶體空間劃為兩個相等的區域,每次只使用其中一個區域。垃圾回收時,遍歷當前使用區域,把正在使用中的物件複製到另外一個區域中。次演算法每次只處理正在使用中的物件,因此複製成本比較小,同時複製過去以後還能進行相應的記憶體整理,不會出現“碎片”問題。當然,此演算法的缺點也是很明顯的,就是需要兩倍記憶體空間。
標記-整理(Mark-Compact):
此演算法結合了“標記-清除”和“複製”兩個演算法的優點。也是分兩階段,第一階段從根節點開始標記所有被引用物件,第二階段遍歷整個堆,把清除未標記物件並且把存活物件“壓縮”到堆的其中一塊,按順序排放。此演算法避免了“標記-清除”的碎片問題,同時也避免了“複製”演算法的空間問題。
按分割槽對待的方式分
增量收集(Incremental Collecting):實時垃圾回收演算法,即:在應用進行的同時進行垃圾回收。不知道什麼原因JDK5.0中的收集器沒有使用這種演算法的。
分代收集(Generational Collecting):基於對物件生命週期分析後得出的垃圾回收演算法。把物件分為年青代、年老代、持久代,對不同生命週期的物件使用不同的演算法(上述方式中的一個)進行回收。現在的垃圾回收器(從J2SE1.2開始)都是使用此演算法的。
按系統執行緒分
序列收集:序列收集使用單執行緒處理所有垃圾回收工作,因為無需多執行緒互動,實現容易,而且效率比較高。但是,其侷限性也比較明顯,即無法使用多處理器的優勢,所以此收集適合單處理器機器。當然,此收集器也可以用在小資料量(100M左右)情況下的多處理器機器上。
並行收集:並行收集使用多執行緒處理垃圾回收工作,因而速度快,效率高。而且理論上CPU數目越多,越能體現出並行收集器的優勢。
併發收集:相對於序列收集和並行收集而言,前面兩個在進行垃圾回收工作時,需要暫停整個執行環境,而只有垃圾回收程式在執行,因此,系統在垃圾回收時會有明顯的暫停,而且暫停時間會因為堆越大而越長。
相關文章
- JVM調優:基本垃圾回收演算法JVM演算法
- JVM調優總結-分代垃圾回收詳述1JVM
- JVM調優總結-分代垃圾回收詳述2JVM
- JVM調優總結(九)-新一代的垃圾回收演算法JVM演算法
- JVM調優總結(四)-垃圾回收面臨的問題JVM
- JVM調優總結(五)-分代垃圾回收詳述1JVM
- JVM調優總結(六)-分代垃圾回收詳述2JVM
- 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總結筆記」Java虛擬機器垃圾回收認知和調優的"思南(司南)"【下部】JVM筆記Java虛擬機
- jvm有哪些垃圾回收演算法JVM演算法
- jvm垃圾分代回收演算法JVM演算法
- Java垃圾回收調優實戰Java
- JVM調優總結(十一)-反思JVM
- JVM原理講解和調優,記憶體管理和垃圾回收,記憶體調優JVM記憶體
- JVM垃圾回收概述JVM
- JVM垃圾回收(下)JVM
- JVM - 垃圾回收概述JVM
- JVM垃圾回收器JVM
- JVM調優:HotSpot JVM垃圾收集器JVMHotSpot
- 【JVM進階之路】十:JVM調優總結JVM
- JVM垃圾回收之三色標記JVM
- 垃圾回收器總結(一)
- 【JVM】垃圾回收的四大演算法JVM演算法
- JVM之垃圾回收(1-概述+演算法)JVM演算法
- 深入理解JVM(四)——垃圾回收演算法JVM演算法
- 深入理解JVM虛擬機器2:JVM垃圾回收基本原理和演算法JVM虛擬機演算法