对于几种GC垃圾收集器的介绍请参阅
http://lizhe.name.csdn.net/node/89
1. Serial
虽然也是分代收集器但是单线程, 运行时阻塞全部进程, 适用场景非常有限,一般用于单核cpu并且堆小于100M的场景
2. Throughput
是Serial的升级版本, 多线程, 是server模式的默认配置, 有富裕的cpu内核的话, 这个版本即使在堆内存小于100M的情况下也比Serial提供了更好的性能
如果堆小于4GB, 这个配置比较中庸一点
如果是运行batch批处理程序, 当batch能够吃掉所有cpu内核时(有足够多的线程或者cpu没有多余的内核提供给jvm), throughput往往可以比CMS提供更好的性能
因为它可以更长时间的保证cpu在100%占用率的情况下工作
如果是运行web应用, 当cpu没有多余内核时, throughput仍然能提供更好的性能. 这是因为如果CMS得倒的cpu资源受限,CMS收集器会发生并发失效的情况,这时候它会使用单线程Full GC
3. CMS
无论是batch程序还是web应用, 只有当cpu资源有富裕的情况下, CMS才可以比throughput提供更好的性能和更大的吞吐量(TPS)
4. G1
G1收集器与CMS收集器类似, 如果堆小于4GB, CMS比G1性能更好, 因为它的算法更简洁,需要的多余动作更少