1.1 --- a/src/share/vm/services/memoryPool.cpp Wed Mar 20 12:27:03 2013 -0700 1.2 +++ b/src/share/vm/services/memoryPool.cpp Fri Mar 22 16:10:01 2013 +0100 1.3 @@ -26,12 +26,15 @@ 1.4 #include "classfile/systemDictionary.hpp" 1.5 #include "classfile/vmSymbols.hpp" 1.6 #include "oops/oop.inline.hpp" 1.7 +#include "runtime/globals.hpp" 1.8 #include "runtime/handles.inline.hpp" 1.9 #include "runtime/javaCalls.hpp" 1.10 +#include "runtime/os.hpp" 1.11 #include "services/lowMemoryDetector.hpp" 1.12 #include "services/management.hpp" 1.13 #include "services/memoryManager.hpp" 1.14 #include "services/memoryPool.hpp" 1.15 +#include "utilities/globalDefinitions.hpp" 1.16 #include "utilities/macros.hpp" 1.17 1.18 MemoryPool::MemoryPool(const char* name, 1.19 @@ -256,3 +259,34 @@ 1.20 1.21 return MemoryUsage(initial_size(), used, committed, maxSize); 1.22 } 1.23 + 1.24 +MetaspacePoolBase::MetaspacePoolBase(const char *name, 1.25 + Metaspace::MetadataType md_type, 1.26 + size_t max_size) : 1.27 + _md_type(md_type), 1.28 + MemoryPool(name, NonHeap, MetaspaceAux::capacity_in_bytes(_md_type), max_size, 1.29 + true, false) { } 1.30 + 1.31 +size_t MetaspacePoolBase::used_in_bytes() { 1.32 + return MetaspaceAux::used_in_bytes(_md_type); 1.33 +} 1.34 + 1.35 +MemoryUsage MetaspacePoolBase::get_memory_usage() { 1.36 + size_t used = MetaspaceAux::used_in_bytes(_md_type); 1.37 + size_t committed = align_size_down_(MetaspaceAux::capacity_in_bytes(_md_type), os::vm_page_size()); 1.38 + return MemoryUsage(initial_size(), used, committed, max_size()); 1.39 +} 1.40 + 1.41 +ClassMetaspacePool::ClassMetaspacePool() : 1.42 + MetaspacePoolBase("Class Metaspace", Metaspace::ClassType, calculate_max_size()) { } 1.43 + 1.44 +size_t ClassMetaspacePool::calculate_max_size() { 1.45 + return UseCompressedKlassPointers ? ClassMetaspaceSize : _undefined_max_size; 1.46 +} 1.47 + 1.48 +MetaspacePool::MetaspacePool() : 1.49 + MetaspacePoolBase("Metaspace", Metaspace::NonClassType, calculate_max_size()) { } 1.50 + 1.51 +size_t MetaspacePool::calculate_max_size() { 1.52 + return FLAG_IS_CMDLINE(MaxMetaspaceSize) ? MaxMetaspaceSize : _undefined_max_size; 1.53 +}