mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 14:54:52 +02:00
8015268: NPG: 2.5% regression in young GC times on CRM Sales Opty
Split SystemDictionary and ClassLoaderDataGraph root processing to help load balancing. Reviewed-by: tschatzl, johnc
This commit is contained in:
parent
7c176c9678
commit
2ccd92e927
7 changed files with 27 additions and 12 deletions
|
@ -45,6 +45,7 @@ enum SH_process_strong_roots_tasks {
|
|||
SH_PS_FlatProfiler_oops_do,
|
||||
SH_PS_Management_oops_do,
|
||||
SH_PS_SystemDictionary_oops_do,
|
||||
SH_PS_ClassLoaderDataGraph_oops_do,
|
||||
SH_PS_jvmti_oops_do,
|
||||
SH_PS_StringTable_oops_do,
|
||||
SH_PS_CodeCache_oops_do,
|
||||
|
@ -173,15 +174,21 @@ void SharedHeap::process_strong_roots(bool activate_scope,
|
|||
if (!_process_strong_tasks->is_task_claimed(SH_PS_SystemDictionary_oops_do)) {
|
||||
if (so & SO_AllClasses) {
|
||||
SystemDictionary::oops_do(roots);
|
||||
ClassLoaderDataGraph::oops_do(roots, klass_closure, !is_scavenging);
|
||||
} else if (so & SO_SystemClasses) {
|
||||
SystemDictionary::always_strong_oops_do(roots);
|
||||
ClassLoaderDataGraph::always_strong_oops_do(roots, klass_closure, !is_scavenging);
|
||||
} else {
|
||||
fatal("We should always have selected either SO_AllClasses or SO_SystemClasses");
|
||||
}
|
||||
}
|
||||
|
||||
if (!_process_strong_tasks->is_task_claimed(SH_PS_ClassLoaderDataGraph_oops_do)) {
|
||||
if (so & SO_AllClasses) {
|
||||
ClassLoaderDataGraph::oops_do(roots, klass_closure, !is_scavenging);
|
||||
} else if (so & SO_SystemClasses) {
|
||||
ClassLoaderDataGraph::always_strong_oops_do(roots, klass_closure, !is_scavenging);
|
||||
}
|
||||
}
|
||||
|
||||
if (!_process_strong_tasks->is_task_claimed(SH_PS_StringTable_oops_do)) {
|
||||
if (so & SO_Strings) {
|
||||
StringTable::oops_do(roots);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue