Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8082918 | emb-9 | Stefan Karlsson | P4 | Resolved | Fixed | team |
This is the FlexibleWorkGang constructor:
FlexibleWorkGang(const char* name, uint workers,
bool are_GC_task_threads,
bool are_ConcurrentGC_threads) :
WorkGang(name, workers, are_GC_task_threads, are_ConcurrentGC_threads),
_active_workers(UseDynamicNumberOfGCThreads ? 1U : ParallelGCThreads) {}
and the WorkGang constructor:
WorkGang::WorkGang(const char* name,
uint workers,
bool are_GC_task_threads,
bool are_ConcurrentGC_threads) :
AbstractWorkGang(name, are_GC_task_threads, are_ConcurrentGC_threads) {
_total_workers = workers;
}
If 'workers' are less than ParallelGCThreads, then _active_workers will be set to a value that is greater than _total_workers (unless we run with UseDynamicNumberOfGCThreads). Both G1 and CMS typically sets the number of concurrent workers to a value below ParallelGCThreads.
This is currently a benign bug, since the GCs will later calculate a new value for _active_workers that will never be higher than _total_workers.
However, this bug impedes stricter asserts and should be fixed.
FlexibleWorkGang(const char* name, uint workers,
bool are_GC_task_threads,
bool are_ConcurrentGC_threads) :
WorkGang(name, workers, are_GC_task_threads, are_ConcurrentGC_threads),
_active_workers(UseDynamicNumberOfGCThreads ? 1U : ParallelGCThreads) {}
and the WorkGang constructor:
WorkGang::WorkGang(const char* name,
uint workers,
bool are_GC_task_threads,
bool are_ConcurrentGC_threads) :
AbstractWorkGang(name, are_GC_task_threads, are_ConcurrentGC_threads) {
_total_workers = workers;
}
If 'workers' are less than ParallelGCThreads, then _active_workers will be set to a value that is greater than _total_workers (unless we run with UseDynamicNumberOfGCThreads). Both G1 and CMS typically sets the number of concurrent workers to a value below ParallelGCThreads.
This is currently a benign bug, since the GCs will later calculate a new value for _active_workers that will never be higher than _total_workers.
However, this bug impedes stricter asserts and should be fixed.
- backported by
-
JDK-8082918 FlexibleWorkGang initializes _active_workers to more than _total_workers
-
- Resolved
-