diff src/share/vm/memory/metaspace.cpp @ 8786:19f9fabd94cc

Merge
author stefank
date Mon, 18 Mar 2013 09:34:58 +0100
parents 15401203db6b 79af1312fc2c
children 7f0cb32dd233
line wrap: on
line diff
--- a/src/share/vm/memory/metaspace.cpp	Fri Mar 15 11:44:33 2013 -0700
+++ b/src/share/vm/memory/metaspace.cpp	Mon Mar 18 09:34:58 2013 +0100
@@ -1308,8 +1308,7 @@
       gclog_or_tty->print_cr("  metaspace HWM: %.1fK", new_capacity_until_GC / (double) K);
     }
   }
-  assert(vsl->used_bytes_sum() == used_after_gc &&
-         used_after_gc <= vsl->capacity_bytes_sum(),
+  assert(used_after_gc <= vsl->capacity_bytes_sum(),
          "sanity check");
 
 }
@@ -1969,6 +1968,9 @@
 }
 
 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(),
                     Mutex::_no_safepoint_check_flag);
 
@@ -1986,7 +1988,7 @@
 
   // Have to update before the chunks_in_use lists are emptied
   // 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());
 
   // Add all the chunks in use by this space manager