※ 引述《ireullin (raison detre)》之銘言:
: 小弟最近在研讀一些關於JVM校調的文章
: 但是有幾個地方有點疑問搞不清楚
: 想請教一下大家釐清一下觀念
: 1. 以jdk7來說目前可以主要的GC有
: Serial GC
: Parallel GC
: Parallel Old GC (Parallel Compacting GC)
: CMS
: G1
: 是否每個執行的程式只能指定使用一種GC?
: 如果我同時下了以下這樣的參數
: -XX:+UseParallelGC
: -XX:+UseConcMarkSweepGC
: -XX:+UseG1GC
: 會發生甚麼結果
這是針對 JVM 的設定,
如並不是針對 "執行的程式",
你應該是要了解 JVM 裡面運作的程式普遍需要的特性 (throughput/latency),
以及執行時期的壓力及硬體環境去決定選用的 GC 演算法
: 2. 承第一個問題
: 如果我下了不存在或是無用的option
: 是否有地方可以看到錯誤訊息
: 目前我看好像沒有
你可以看 GC log 或者是透過 JConsole 確認最終設定的結果
: 3. 分代處理的觀念
: 是每一個GC都這樣做嗎
: 因為我好像有看到一些文章有說
: G1中並沒有分代處理的觀念
G1 也有針對不同的世代做處理,
一樣有分成 minor/major/full GC
: 4. 在每一個generation所使用的回收演算法都是一樣的?
: Mark-Sweep
: Copying
: Mark-Compact
: 是否會在不同generation使用不同的演算法
: 目前看到的演算法都是跟著GC的
看不懂在問什麼..
CMS 一定是針對 old gen 進行的 major GC,
CMS young gen 的處理方式跟 UseParallelGC(PS Scavenge) 類似,
都是採多緒 GC