提交 7a9f1bf2 编写于 作者: S stefank

Merge

...@@ -6068,6 +6068,10 @@ void CMSCollector::sweep(bool asynch) { ...@@ -6068,6 +6068,10 @@ void CMSCollector::sweep(bool asynch) {
verify_work_stacks_empty(); verify_work_stacks_empty();
verify_overflow_empty(); verify_overflow_empty();
if (should_unload_classes()) {
ClassLoaderDataGraph::purge();
}
_intra_sweep_timer.stop(); _intra_sweep_timer.stop();
_intra_sweep_estimate.sample(_intra_sweep_timer.seconds()); _intra_sweep_estimate.sample(_intra_sweep_timer.seconds());
......
...@@ -656,7 +656,7 @@ void ParallelScavengeHeap::print_tracing_info() const { ...@@ -656,7 +656,7 @@ void ParallelScavengeHeap::print_tracing_info() const {
tty->print_cr("[Accumulated GC generation 0 time %3.7f secs]", time); tty->print_cr("[Accumulated GC generation 0 time %3.7f secs]", time);
} }
if (TraceGen1Time) { if (TraceGen1Time) {
double time = PSMarkSweep::accumulated_time()->seconds(); double time = UseParallelOldGC ? PSParallelCompact::accumulated_time()->seconds() : PSMarkSweep::accumulated_time()->seconds();
tty->print_cr("[Accumulated GC generation 1 time %3.7f secs]", time); tty->print_cr("[Accumulated GC generation 1 time %3.7f secs]", time);
} }
} }
......
...@@ -554,6 +554,8 @@ void GenCollectedHeap::do_collection(bool full, ...@@ -554,6 +554,8 @@ void GenCollectedHeap::do_collection(bool full,
} }
if (complete) { if (complete) {
// Delete metaspaces for unloaded class loaders and clean up loader_data graph
ClassLoaderDataGraph::purge();
// Resize the metaspace capacity after full collections // Resize the metaspace capacity after full collections
MetaspaceGC::compute_new_size(); MetaspaceGC::compute_new_size();
update_full_collections_completed(); update_full_collections_completed();
...@@ -564,11 +566,6 @@ void GenCollectedHeap::do_collection(bool full, ...@@ -564,11 +566,6 @@ void GenCollectedHeap::do_collection(bool full,
gc_epilogue(complete); gc_epilogue(complete);
// Delete metaspaces for unloaded class loaders and clean up loader_data graph
if (complete) {
ClassLoaderDataGraph::purge();
}
if (must_restore_marks_for_biased_locking) { if (must_restore_marks_for_biased_locking) {
BiasedLocking::restore_marks(); BiasedLocking::restore_marks();
} }
......
...@@ -1308,8 +1308,7 @@ void MetaspaceGC::compute_new_size() { ...@@ -1308,8 +1308,7 @@ void MetaspaceGC::compute_new_size() {
gclog_or_tty->print_cr(" metaspace HWM: %.1fK", new_capacity_until_GC / (double) K); gclog_or_tty->print_cr(" metaspace HWM: %.1fK", new_capacity_until_GC / (double) K);
} }
} }
assert(vsl->used_bytes_sum() == used_after_gc && assert(used_after_gc <= vsl->capacity_bytes_sum(),
used_after_gc <= vsl->capacity_bytes_sum(),
"sanity check"); "sanity check");
} }
...@@ -1969,6 +1968,9 @@ void SpaceManager::initialize() { ...@@ -1969,6 +1968,9 @@ void SpaceManager::initialize() {
} }
SpaceManager::~SpaceManager() { SpaceManager::~SpaceManager() {
// This call this->_lock which can't be done while holding expand_lock()
const size_t in_use_before = sum_capacity_in_chunks_in_use();
MutexLockerEx fcl(SpaceManager::expand_lock(), MutexLockerEx fcl(SpaceManager::expand_lock(),
Mutex::_no_safepoint_check_flag); Mutex::_no_safepoint_check_flag);
...@@ -1986,7 +1988,7 @@ SpaceManager::~SpaceManager() { ...@@ -1986,7 +1988,7 @@ SpaceManager::~SpaceManager() {
// Have to update before the chunks_in_use lists are emptied // Have to update before the chunks_in_use lists are emptied
// below. // below.
chunk_manager->inc_free_chunks_total(sum_capacity_in_chunks_in_use(), chunk_manager->inc_free_chunks_total(in_use_before,
sum_count_in_chunks_in_use()); sum_count_in_chunks_in_use());
// Add all the chunks in use by this space manager // Add all the chunks in use by this space manager
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册