1. 程式人生 > >jvm(垃圾回收器)

jvm(垃圾回收器)

清除 jdk1 這樣的 內存 new semi 整理 新生代 進行

1、Serial收集器(串行)

一個單線程的垃圾回收器,使用復制算法,在jdk1.3.1之前也是新生代唯一可以使用的垃圾回收器。單線程不僅僅只說明它只用一個cpu或一個收集線程去完成收集工作,關鍵是在其進行垃圾回收的時候,

會停止到所有其他的工作線程,直到它的收集工作完成。

缺點:每次收集的時候,都會運用的停頓,給用戶的體驗不好

優點:簡單高效,沒有線程的而外開銷,專心的幹垃圾回收工作,在一個一般在系統裏邊,分配給虛擬機的內存管理不會很大,如果只是收集幾十兆到一兩百兆的新生代,jvm停頓的時間可以控制在

幾十毫秒到幾百毫秒,對於用戶而言,這樣的卡頓基本也是完全可以接受的,所以Serial收集器仍然是clients模式下jvm默認的新生代垃圾回收器。

2、ParNew收集器(Serial多線程版)

ParNew是Serial的多線程版本,除了多線程,其他的基本和Serial收集器一樣。ParNew收集器是除了Serial收集器外唯一一個能和GMS收集器配合工作。GMS是一個並行的垃圾回收器,在不停止用

戶線程的情況下完成垃圾回收工作。

3、Parallel Scavenge收集器(並行清除)

Parallel Scavenge收集器也是新生代的垃圾回收器,多線程的,和ParNew類似,但是它關註的點是達到一個可控制的吞吐量(運行代碼時間/(運行代碼時間+回收垃圾時間))。

用戶交互多的話,可以適當的調整MaxGCPauseMills的大小,調高吞吐量,停頓的時間降低,但是停頓的時間縮短是犧牲新生代空間來進行的,所以有可能GC的更加頻繁,所以不宜調整的過小。

對於計算型的應用,用戶交互的比較少,可以長時間運算之後在進行一次比較長時間的垃圾回收。

4、Serial Old收集器

Serial Old收集器是Serial的老年代版本,采用了標記整理的算法。

5、Parallel Old收集器

Parallel Old是 Parallel Scavenge的老年代版本,也是采用了標記整理的算法

6、CMS收集器

7、G1收集器

jvm(垃圾回收器)