当前位置:  开发笔记 > 编程语言 > 正文

Java并发和并行GC

如何解决《Java并发和并行GC》经验,为你挑选了4个好方法。

本文在这里建议使用-XX:+UseParNewGC"为了使与并发GC并行年轻一代的GC".

我的困惑是,为了启用并行和并发GC,我应该

-XX:+UseParNewGC

使用-XX:+UseParNewGC -XX:+UseConcMarkSweepGC

PS

我正在使用JVM 6.



1> sk...:

由于您链接的文档是针对1.4.2 VM的,因此我假设您正在使用(JVM 5和6的行为方式不同).

来自http://java.sun.com/docs/hotspot/gc1.4.2/

if -XX:+ UseConcMarkSweepGC用于命令行,如果没有在命令行上显式设置,则标志UseParNewGC也设置为true

所以答案是你只需要使用-XX:+ UseConcMarkSweepGC它将启用并行年轻代收集器的并发收集器.

编辑:对于Java 6,相同的标志(-XX:+ UseConcMarkSweepGC)启用并发收集器.您想要的收集器的选择取决于一些事情,您应该测试不同的配置.但是有一些非常一般的指导方针.如果您有单个处理器,单线程机器,那么您应该使用串行收集器(某些配置的默认值,可以使用-XX:+ UseSerialGC显式启用).对于工作负载基本上受CPU限制的多处理器计算机,请使用并行收集器.如果使用-server标志,则默认启用此功能,或者可以使用-XX:+ UseParallelGC显式启用它.如果您希望缩短GC暂停时间,代价是使用更多的CPU总CPU时间,并且您有多个CPU,则可以使用并发收集器(-XX:+ UseConcMarkSweepGC).


您可以查看java -XX:+ PrintCommandLineFlags -XX:+ UseConcMarkSweepGC -version => -XX:+ UseParNewGC自动设置.(经1.6.0_26测试).

2> 小智..:

此博客条目对不同的收集器有很好的细分,哪些选项有效:http://blogs.oracle.com/jonthecollector/entry/our_collectors



3> anjanb..:

java/JDK 6 GC调优:http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html.这是来自SUN(现在的Oracle).完整的东西.

另请参阅
http://kirk.blog-city.com/is_your_concurrent_collector_failing_you.htm
http://www.javaperformancetuning.com/



4> Charles Mung..:

Java GC调优基本上是一个黑暗的艺术,但在我的应用程序(运行50 + GB堆和16个物理内核)中,ConcMarkSweep收集器导致比-server默认值快3倍,比ParallelOldGC加速2.2倍.

如果您不与其他进程共享计算机(因此闲置核心只是浪费),请使用ConcMarkSweepGC.

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有