php做商城網(wǎng)站上海做網(wǎng)絡(luò)口碑優(yōu)化的公司
文章目錄
- 1. 查看默認GC
- 2. Serial GC : 串行回收
- 3. ParNew GC:并行回收
- 4. Parallel GC:吞吐量優(yōu)先
1. 查看默認GC
-XX:+PrintCommandLineFlags
:查看命令行相關(guān)參數(shù)(包含使用的垃圾收集器)- 使用命令行指令:
jinfo –flag
相關(guān)垃圾回收器參數(shù) 進程IDjinfo -flag UseParallelGC 10098
2. Serial GC : 串行回收
概述
- Serial收集器是最基本、歷史最悠久的垃圾收集器了。JDK1.3之前回收新生代唯一的選擇。
- Serial收集器作為HotSpot中Client模式下的默認新生代垃圾收集器。
- Serial 收集器 采用 復(fù)制算法、串行回收和”Stop-the-World”機制 的方式執(zhí)行內(nèi)存回收。
- 除了年輕代之外,Serial收集器還提供用于執(zhí)行老年代垃圾收集的Serial Old收集器。Serial Old 收集器同樣也采用了串行回收和”Stop the World”機制,只不過內(nèi)存回收算法使用的是標記-壓縮算法。
- Serial Old 是運行在 Client 模式下默認的老年代的垃圾回收器
- Serial Old 在 Server 模式下主要有兩個用途:① 與新生代的Parallel Scavenge配合使用 ② 作為老年代CMS收集器的后備垃圾收集方案
- 這個收集器是一個單線程的收集器,但它的“單線程”的意義并不僅僅說明它只會使用一個 CPU 或一條收集線程去完成垃圾收集工作,更重要的是在它進行垃圾收集時,必須暫停其他所有的工作線程,直到它收集結(jié)束(Stop The World)。
優(yōu)勢:簡單而高效(與其他收集器的單線程比),對于限定單個 CPU 的環(huán)境來說,Serial收集器由于沒有線程交互的開銷,專心做垃圾收集自然可以獲得最高的單線程收集效率。
運行在Client模式下的虛擬機是個不錯的選擇。
在用戶的桌面應(yīng)用場景中,可用內(nèi)存一般不大(幾十MB至一兩百MB),可以在較短時間內(nèi)完成垃圾收集(幾十ms至一百多ms),只要不頻繁發(fā)生,使用串行回收器是可以接受的。
參數(shù)
在HotSpot虛擬機中,使用 -XX:+UseSerialGC 參數(shù)可以指定年輕代和老年代都使用串行收集器。
等價于 新生代用Serial GC,且老年代用Serial Old GC
小結(jié)
這種垃圾收集器大家了解,現(xiàn)在已經(jīng)不用串行的了。而且在限定單核cpu才可以用?,F(xiàn)在都不是單核的了。
對于交互較強的應(yīng)用而言,這種垃圾收集器是不能接受的。一般在Java web應(yīng)用程序中是不會采用串行垃圾收集器的。
3. ParNew GC:并行回收
概述
-
如果說Serial GC是年輕代中的單線程垃圾收集器,那么ParNew收集器則是Serial收集器的多線程版本。
- Par是Parallel的縮寫,New:只能處理的是新生代
-
ParNew 收集器除了采用并行回收的方式執(zhí)行內(nèi)存回收外,兩款垃圾收集器之間幾乎沒有任何區(qū)別。ParNew收集器在年輕代中同樣也是采用復(fù)制算法、"Stop-the-World"機制。
-
ParNew 是很多JVM運行在Server模式下新生代的默認垃圾收集器。
- 對于新生代,回收次數(shù)頻繁,使用并行方式高效。
- 對于老年代,回收次數(shù)少,使用串行方式節(jié)省資源。(CPU并行需要切換線程,串行可以省去切換線程的資源)
參數(shù)
在程序中,開發(fā)人員可以通過選項 -XX:+UseParNewGC
手動指定使用ParNew收集器執(zhí)行內(nèi)存回收任務(wù)。它表示年輕代使用并行收集器,不影響老年代。
-XX:ParallelGCThreads
限制線程數(shù)量,默認開啟和 CPU 數(shù)據(jù)相同的線程數(shù)。
4. Parallel GC:吞吐量優(yōu)先
概述
-
HotSpot的年輕代中除了擁有ParNew收集器是基于并行回收的以外,Parallel Scavenge收集器同樣也采用了復(fù)制算法、并行回收和”Stop the World”機制。
-
那么Parallel收集器的出現(xiàn)是否多此一舉?
- 和ParNew收集器不同,Parallel Scavenge收集器的目標則是達到一個可控制的吞吐量(Throughput),它也被稱為吞吐量優(yōu)先的垃圾收集器。
- 自適應(yīng)調(diào)節(jié)策略也是Parallel Scavenge與ParNew一個重要區(qū)別。
-
高吞吐量則可以高效率地利用 CPU 時間,盡快完成程序的運算任務(wù),主要適合在后臺運算而不需要太多交互的任務(wù)。因此,常見在服務(wù)器環(huán)境中使用。例如,那些執(zhí)行批量處理、訂單處理、工資支付、科學計算的應(yīng)用程序。
-
Parallel 收集器在JDK1.6時提供了用于執(zhí)行老年代垃圾收集的Parallel Old收集器,用來代替老年代的Serial Old收集器。
-
Parallel Old 收集器采用了標記-壓縮算法,但同樣也是基于并行回收和”Stop-the-World”機制。
- 在程序吞吐量優(yōu)先的應(yīng)用場景中, Parallel 收集器和Parallel Old收集器的組合,在Server模式下的內(nèi)存回收性能很不錯。
- 在Java8中,默認是此垃圾收集器。