【JVM】垃圾回收器總結(1)

垃圾回收器 V.S. 垃圾回收算法

垃圾回收算法有四種,分別是引用計數(已經不用了)、複製拷貝、標記清除、標記整理。一般的實現採用分代回收算法,根據不同代的特點應用不同的算法。垃圾回收算法是內存回收的方法論。垃圾回收器是算法的落地實現。和回收算法一樣,目前還沒有出現完美的收集器,而是要根據具體的應用場景選擇最合適的收集器,進行分代收集。

四大垃圾回收方式

串行垃圾回收(Serial)

串行垃圾回收是爲單線程環境設計且只使用一個線程進行垃圾回收,會暫停所有的用戶線程,不適合交互性強的服務器環境。

並行垃圾回收(Parallel)

多個垃圾收集器線程並行工作,同樣會暫停用戶線程,適用於科學計算、大數據後臺處理等多交互場景。

併發垃圾回收(CMS)

用戶線程和垃圾回收線程同時執行,不一定是並行的,可能是交替執行,可能一邊垃圾回收,一邊運行應用線程,不需要停頓用戶線程,互聯網應用程序中經常使用,適用對響應時間有要求的場景。

G1垃圾回收

G1垃圾回收器將堆內存分割成不同的區域然後併發地對其進行垃圾回收。

 

七種垃圾回收器類型

七種垃圾回收器:UseSerialOldGC(已經廢棄)、UseSerialGC、UseParallelGC、UseConcMarkSweepGC、UseParNewGC、UseParOldGC、UserG1GC。

SerialOldGC、ParOldGC、CMS用於老年代,SerialGC、ParallelGC、ParNewGC用於年輕代,G1兩個代都能用。畫叉的Java8不推薦使用了。

如何查看JVM默認的垃圾回收器?

使用命令:java -XX:+PrintCommandLineFlags -version

Java11默認使用的是G1垃圾回收器

 

Java8默認使用的是並行垃圾回收器

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章