垃圾收集器是垃圾回收算法的體現
JVM中垃圾收集器分爲三類:
1.串行收集器 2.並行收集器 3.併發收集器
串行收集器
用單線程處理所有垃圾回收工作,因此無需多線程交互,所以效率比較高
適合單處理器機器。串行垃圾回收時會暫停程序
-XX:+UseSerialGC
並行收集器
對年輕代進行並行垃圾回收
-XX:+UseParallelGC
並行收集器在jdk5開始引入,jdk6進行了增強—可以對年老代進行並行收集。
(對年老代並行收集)
-XX:+UseParallelOldGC
設置並行垃圾回收的線程數
-XX:ParallelGCThreads=<N>
併發收集器:
可以保證大部分工作都併發進行(應用不停止)
適合對響應時間要求比較高的中、大規模應用
-XX:UseConcMarkSweepGC
1. Serial收集器 —— -XX:+UseSerialGC
單線程會收集器,收集時會暫停所有工作線程,使用複製收集算法,在虛擬機運行在Client模式默認的新生代收集器
2. ParNew收集器 —— -XX:+UseParNewGC
是Serial的多線程版本,虛擬機運行在Server模式的默認新生代收集器
3. Parallel Scavenge收集器(PS收集器) —— -XX:+UseParallelGC
多線程收集器,也是使用複製算法,以吞吐量最大化(GC時間佔總運行時間最小)爲目標,是新生代收集器
4. Serial Old收集器
單線程收集器,使用標記-整理算法,是老年代的收集器
5. Parallel Old收集器 —— -XX:+UseParallelOldGC
年老代吞吐量優化收集器,使用多線程和標記-整理
沒有最好的收集器,只有最合適的收集器,根據實際場景選擇合適的收集器纔是王道