您的位置:首页 > Web前端

Conflicting collector combinations in option list; please refer to the release notes for the combina

2014-09-17 11:45 627 查看
最近在做JVM优化配置时,配置如下:

set "JAVA_OPTS=-Xms512M -Xmx512M -Xmn128M -XX:PermSize=256M -XX:MaxPermSize=256M -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:GCTimeRatio=19 -Xnoclassgc -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=70 -XX:SoftRefLRUPolicyMSPerMB=0"
发现在win7中的一个jvm中可以正常启动,jdk为sun jdk,但是在linux中的一个jvm中,jdk为Open Jdk,出现了如题的异常,猜想应该是两个jvm的GC实现不同。于是,就网上找了下,看到下面的代码就清楚了:

bool Arguments::check_gc_consistency() {
bool status = true;
// Ensure that the user has not selected conflicting sets
// of collectors. [Note: this check is merely a user convenience;
// collectors over-ride each other so that only a non-conflicting
// set is selected; however what the user gets is not what they
// may have expected from the combination they asked for. It's
// better to reduce user confusion by not allowing them to
// select conflicting combinations.
uint i = 0;
if (UseSerialGC)                       i++;
if (UseConcMarkSweepGC || UseParNewGC) i++;
if (UseParallelGC || UseParallelOldGC) i++;
if (UseG1GC)                           i++;
if (i > 1) {
jio_fprintf(defaultStream::error_stream(),
"Conflicting collector combinations in option list; "
"please refer to the release notes for the combinations "
"allowed\n");
status = false;
}

return status;
}


看过上面的代码,再看下我的配置项中存在“UseParNewGC”项,终于找到出错的原因了,于是就把该项给去掉了,再次启动,成功!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐