mirror of
https://github.com/openjdk/jdk.git
synced 2026-01-28 12:09:14 +00:00
8364504: [BACKOUT] JDK-8364176 Serial: Group all class unloading logic at the end of marking phase
Reviewed-by: dholmes
This commit is contained in:
parent
724e8c076e
commit
913d318c97
@ -525,9 +525,7 @@ void SerialFullGC::phase1_mark(bool clear_all_softrefs) {
|
||||
{
|
||||
GCTraceTime(Debug, gc, phases) tm_m("Class Unloading", gc_timer());
|
||||
|
||||
ClassUnloadingContext ctx(1 /* num_nmethod_unlink_workers */,
|
||||
false /* unregister_nmethods_during_purge */,
|
||||
false /* lock_nmethod_free_separately */);
|
||||
ClassUnloadingContext* ctx = ClassUnloadingContext::context();
|
||||
|
||||
bool unloading_occurred;
|
||||
{
|
||||
@ -543,7 +541,7 @@ void SerialFullGC::phase1_mark(bool clear_all_softrefs) {
|
||||
{
|
||||
GCTraceTime(Debug, gc, phases) t("Purge Unlinked NMethods", gc_timer());
|
||||
// Release unloaded nmethod's memory.
|
||||
ctx.purge_nmethods();
|
||||
ctx->purge_nmethods();
|
||||
}
|
||||
{
|
||||
GCTraceTime(Debug, gc, phases) ur("Unregister NMethods", gc_timer());
|
||||
@ -551,7 +549,7 @@ void SerialFullGC::phase1_mark(bool clear_all_softrefs) {
|
||||
}
|
||||
{
|
||||
GCTraceTime(Debug, gc, phases) t("Free Code Blobs", gc_timer());
|
||||
ctx.free_nmethods();
|
||||
ctx->free_nmethods();
|
||||
}
|
||||
|
||||
// Prune dead klasses from subklass/sibling/implementor lists.
|
||||
@ -559,13 +557,6 @@ void SerialFullGC::phase1_mark(bool clear_all_softrefs) {
|
||||
|
||||
// Clean JVMCI metadata handles.
|
||||
JVMCI_ONLY(JVMCI::do_unloading(unloading_occurred));
|
||||
|
||||
// Delete metaspaces for unloaded class loaders and clean up loader_data graph
|
||||
ClassLoaderDataGraph::purge(true /* at_safepoint */);
|
||||
DEBUG_ONLY(MetaspaceUtils::verify();)
|
||||
|
||||
// Need to clear claim bits for the next mark.
|
||||
ClassLoaderDataGraph::clear_claimed_marks();
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
@ -603,6 +603,9 @@ void SerialHeap::do_full_collection(bool clear_all_soft_refs) {
|
||||
gc_prologue();
|
||||
COMPILER2_OR_JVMCI_PRESENT(DerivedPointerTable::clear());
|
||||
CodeCache::on_gc_marking_cycle_start();
|
||||
ClassUnloadingContext ctx(1 /* num_nmethod_unlink_workers */,
|
||||
false /* unregister_nmethods_during_purge */,
|
||||
false /* lock_nmethod_free_separately */);
|
||||
|
||||
STWGCTimer* gc_timer = SerialFullGC::gc_timer();
|
||||
gc_timer->register_gc_start();
|
||||
@ -627,6 +630,13 @@ void SerialHeap::do_full_collection(bool clear_all_soft_refs) {
|
||||
_old_gen->compute_new_size();
|
||||
_young_gen->compute_new_size();
|
||||
|
||||
// Delete metaspaces for unloaded class loaders and clean up loader_data graph
|
||||
ClassLoaderDataGraph::purge(/*at_safepoint*/true);
|
||||
DEBUG_ONLY(MetaspaceUtils::verify();)
|
||||
|
||||
// Need to clear claim bits for the next mark.
|
||||
ClassLoaderDataGraph::clear_claimed_marks();
|
||||
|
||||
_old_gen->update_promote_stats();
|
||||
|
||||
// Resize the metaspace capacity after full collections
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user