mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 07:14:30 +02:00
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
3 changed files with 22 additions and 3 deletions
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -25,6 +25,7 @@
|
||||||
#include "precompiled.hpp"
|
#include "precompiled.hpp"
|
||||||
#include "gc/shared/collectedHeap.hpp"
|
#include "gc/shared/collectedHeap.hpp"
|
||||||
#include "gc/shared/collectorPolicy.hpp"
|
#include "gc/shared/collectorPolicy.hpp"
|
||||||
|
#include "gc/shared/genCollectedHeap.hpp"
|
||||||
#include "gc/shared/threadLocalAllocBuffer.hpp"
|
#include "gc/shared/threadLocalAllocBuffer.hpp"
|
||||||
#include "runtime/arguments.hpp"
|
#include "runtime/arguments.hpp"
|
||||||
#include "runtime/commandLineFlagConstraintsGC.hpp"
|
#include "runtime/commandLineFlagConstraintsGC.hpp"
|
||||||
|
@ -448,6 +449,22 @@ Flag::Error CMSPrecleanNumeratorConstraintFunc(uintx value, bool verbose) {
|
||||||
return Flag::SUCCESS;
|
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) {
|
Flag::Error CMSWorkQueueDrainThresholdConstraintFunc(uintx value, bool verbose) {
|
||||||
#if INCLUDE_ALL_GCS
|
#if INCLUDE_ALL_GCS
|
||||||
if (UseConcMarkSweepGC) {
|
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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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 MarkStackSizeConstraintFunc(size_t value, bool verbose);
|
||||||
Flag::Error CMSPrecleanDenominatorConstraintFunc(uintx value, bool verbose);
|
Flag::Error CMSPrecleanDenominatorConstraintFunc(uintx value, bool verbose);
|
||||||
Flag::Error CMSPrecleanNumeratorConstraintFunc(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 CMSWorkQueueDrainThresholdConstraintFunc(uintx value, bool verbose);
|
||||||
Flag::Error MaxGCPauseMillisConstraintFunc(uintx value, bool verbose);
|
Flag::Error MaxGCPauseMillisConstraintFunc(uintx value, bool verbose);
|
||||||
Flag::Error GCPauseIntervalMillisConstraintFunc(uintx value, bool verbose);
|
Flag::Error GCPauseIntervalMillisConstraintFunc(uintx value, bool verbose);
|
||||||
|
|
|
@ -1901,7 +1901,8 @@ public:
|
||||||
\
|
\
|
||||||
product(uintx, CMSSamplingGrain, 16*K, \
|
product(uintx, CMSSamplingGrain, 16*K, \
|
||||||
"The minimum distance between eden samples for CMS (see above)") \
|
"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, \
|
product(bool, CMSScavengeBeforeRemark, false, \
|
||||||
"Attempt scavenge before the CMS remark step") \
|
"Attempt scavenge before the CMS remark step") \
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue