※ 引述《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