8145312: CMS: There is insufficient memory with CMSSamplingGrain=1
Change minimum range and add constraint function for CMSSamplingGrain flag Reviewed-by: jmasa, ddmitriev
This commit is contained in:
parent
6e0466f618
commit
a8672f2267
hotspot/src/share/vm/runtime
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -25,6 +25,7 @@
|
||||
#include "precompiled.hpp"
|
||||
#include "gc/shared/collectedHeap.hpp"
|
||||
#include "gc/shared/collectorPolicy.hpp"
|
||||
#include "gc/shared/genCollectedHeap.hpp"
|
||||
#include "gc/shared/threadLocalAllocBuffer.hpp"
|
||||
#include "runtime/arguments.hpp"
|
||||
#include "runtime/commandLineFlagConstraintsGC.hpp"
|
||||
@ -448,6 +449,22 @@ Flag::Error CMSPrecleanNumeratorConstraintFunc(uintx value, bool verbose) {
|
||||
return Flag::SUCCESS;
|
||||
}
|
||||
|
||||
Flag::Error CMSSamplingGrainConstraintFunc(uintx value, bool verbose) {
|
||||
#if INCLUDE_ALL_GCS
|
||||
if (UseConcMarkSweepGC) {
|
||||
size_t max_capacity = GenCollectedHeap::heap()->young_gen()->max_capacity();
|
||||
if (value > max_uintx - max_capacity) {
|
||||
CommandLineError::print(verbose,
|
||||
"CMSSamplingGrain (" UINTX_FORMAT ") must be "
|
||||
"less than or equal to ergonomic maximum (" SIZE_FORMAT ")\n",
|
||||
value, max_uintx - max_capacity);
|
||||
return Flag::VIOLATES_CONSTRAINT;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return Flag::SUCCESS;
|
||||
}
|
||||
|
||||
Flag::Error CMSWorkQueueDrainThresholdConstraintFunc(uintx value, bool verbose) {
|
||||
#if INCLUDE_ALL_GCS
|
||||
if (UseConcMarkSweepGC) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -61,6 +61,7 @@ Flag::Error CMSOldPLABMaxConstraintFunc(size_t value, bool verbose);
|
||||
Flag::Error MarkStackSizeConstraintFunc(size_t value, bool verbose);
|
||||
Flag::Error CMSPrecleanDenominatorConstraintFunc(uintx value, bool verbose);
|
||||
Flag::Error CMSPrecleanNumeratorConstraintFunc(uintx value, bool verbose);
|
||||
Flag::Error CMSSamplingGrainConstraintFunc(uintx value, bool verbose);
|
||||
Flag::Error CMSWorkQueueDrainThresholdConstraintFunc(uintx value, bool verbose);
|
||||
Flag::Error MaxGCPauseMillisConstraintFunc(uintx value, bool verbose);
|
||||
Flag::Error GCPauseIntervalMillisConstraintFunc(uintx value, bool verbose);
|
||||
|
@ -1901,7 +1901,8 @@ public:
|
||||
\
|
||||
product(uintx, CMSSamplingGrain, 16*K, \
|
||||
"The minimum distance between eden samples for CMS (see above)") \
|
||||
range(1, max_uintx) \
|
||||
range(ObjectAlignmentInBytes, max_uintx) \
|
||||
constraint(CMSSamplingGrainConstraintFunc,AfterMemoryInit) \
|
||||
\
|
||||
product(bool, CMSScavengeBeforeRemark, false, \
|
||||
"Attempt scavenge before the CMS remark step") \
|
||||
|
Loading…
x
Reference in New Issue
Block a user