JVM調優:基本垃圾回收演算法
來源:https://www.iteye.com/blog/pengjiaheng-520228
可以從不同的的角度去劃分垃圾回收演算法:
一、按照基本回收策略分初級篇
引用計數(Reference Counting):
比較古老的回收演算法。原理是此物件有一個引用,即增加一個計數,刪除一個引用則減少一個計數。垃圾回收時,只用收集計數為0的物件。此演算法最致命的是無法處理迴圈引用的問題。
標記-清除(Mark-Sweep):
此演算法執行分兩階段。第一階段從引用根節點開始標記所有被引用的物件,第二階段遍歷整個堆,把未標記的物件清除。此演算法需要暫停整個應用,同時,會產生記憶體碎片。
複製(Copying):
此演算法把記憶體空間劃為兩個相等的區域,每次只使用其中一個區域。垃圾回收時,遍歷當前使用區域,把正在使用中的物件複製到另外一個區域中。次演算法每次只處理正在使用中的物件,因此複製成本比較小,同時複製過去以後還能進行相應的記憶體整理,不會出現“碎片”問題。當然,此演算法的缺點也是很明顯的,就是需要兩倍記憶體空間。
標記-整理(Mark-Compact):
此演算法結合了“標記-清除”和“複製”兩個演算法的優點。也是分兩階段,第一階段從根節點開始標記所有被引用物件,第二階段遍歷整個堆,把清除未標記物件並且把存活物件“壓縮”到堆的其中一塊,按順序排放。此演算法避免了“標記-清除”的碎片問題,同時也避免了“複製”演算法的空間問題。
二、按分割槽對待的方式分
增量收集(Incremental Collecting):
實時垃圾回收演算法,即:在應用進行的同時進行垃圾回收。不知道什麼原因JDK5.0中的收集器沒有使用這種演算法的。
分代收集(Generational Collecting):
基於對物件生命週期分析後得出的垃圾回收演算法。把物件分為年青代、年老代、持久代,對不同生命週期的物件使用不同的演算法(上述方式中的一個)進行回收。現在的垃圾回收器(從J2SE1.2開始)都是使用此演算法的。
三、按系統執行緒分
序列收集:
序列收集使用單執行緒處理所有垃圾回收工作,因為無需多執行緒互動,實現容易,而且效率比較高。但是,其侷限性也比較明顯,即無法使用多處理器的優勢,所以此收集適合單處理器機器。當然,此收集器也可以用在小資料量(100M左右)情況下的多處理器機器上。
並行收集:
並行收集使用多執行緒處理垃圾回收工作,因而速度快,效率高。而且理論上CPU數目越多,越能體現出並行收集器的優勢。
併發收集:
相對於序列收集和並行收集而言,前面兩個在進行垃圾回收工作時,需要暫停整個執行環境,而只有垃圾回收程式在執行,因此,系統在垃圾回收時會有明顯的暫停,而且暫停時間會因為堆越大而越長。
- END -
如果看到這裡,說明你喜歡這篇文章,請轉發、點贊。掃描下方二維碼或者微信搜尋「perfect_iscas」,新增好友後即可獲得10套程式設計師全棧課程+1000套PPT和簡歷模板,向我私聊「進群」二字即可進入高質量交流群。
↓掃描二維碼進群↓
喜歡文章,點個在看
相關文章
- JVM調優之垃圾定位、垃圾回收演算法、垃圾處理器對比JVM演算法
- JVM 垃圾回收演算法和垃圾回收器JVM演算法
- JVM垃圾回收演算法JVM演算法
- JVM系列(五) - JVM垃圾回收演算法JVM演算法
- JVM(九):垃圾回收演算法JVM演算法
- jvm有哪些垃圾回收演算法JVM演算法
- [JVM]垃圾回收JVM
- JVM垃圾回收JVM
- jvm(三)——jvm垃圾回收演算法以及實現JVM演算法
- JVM垃圾回收(下)JVM
- JVM垃圾回收概述JVM
- JVM垃圾回收器JVM
- JVM - 垃圾回收概述JVM
- JVM調優:HotSpot JVM垃圾收集器JVMHotSpot
- 【JVM】垃圾回收的四大演算法JVM演算法
- JVM之垃圾回收(1-概述+演算法)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 垃圾回收機制JVM
- Java教程分享:JVM垃圾回收機制之物件回收演算法JavaJVM物件演算法
- 物件回收判定與垃圾回收演算法-JVM學習筆記(1)物件演算法JVM筆記
- 必知必會JVM垃圾回收——物件搜尋演算法與回收演算法JVM物件演算法
- 關於JVM的垃圾回收JVM
- jvm的垃圾回收機制JVM
- 淺談JVM與垃圾回收JVM
- 帶你掌握JVM垃圾回收JVM
- 再看JVM:垃圾回收那些事JVM
- 理解JVM(七):垃圾回收器JVM
- JVM記憶體分配策略,及垃圾回收演算法JVM記憶體演算法
- jvm入門及理解(六)——垃圾回收與演算法JVM演算法