< prev index next >

src/hotspot/share/services/memoryManager.cpp

Print this page
rev 47884 : 8191564: Refactor GC related servicability code into GC specific subclasses


  42   (void)const_cast<instanceOop&>(_memory_mgr_obj = instanceOop(NULL));
  43 }
  44 
  45 void MemoryManager::add_pool(MemoryPool* pool) {
  46   assert(_num_pools < MemoryManager::max_num_pools, "_num_pools exceeds the max");
  47   if (_num_pools < MemoryManager::max_num_pools) {
  48     _pools[_num_pools] = pool;
  49     _num_pools++;
  50   }
  51   pool->add_manager(this);
  52 }
  53 
  54 MemoryManager* MemoryManager::get_code_cache_memory_manager() {
  55   return (MemoryManager*) new CodeCacheMemoryManager();
  56 }
  57 
  58 MemoryManager* MemoryManager::get_metaspace_memory_manager() {
  59   return (MemoryManager*) new MetaspaceMemoryManager();
  60 }
  61 
  62 GCMemoryManager* MemoryManager::get_copy_memory_manager() {
  63   return (GCMemoryManager*) new CopyMemoryManager();
  64 }
  65 
  66 GCMemoryManager* MemoryManager::get_msc_memory_manager() {
  67   return (GCMemoryManager*) new MSCMemoryManager();
  68 }
  69 
  70 GCMemoryManager* MemoryManager::get_parnew_memory_manager() {
  71   return (GCMemoryManager*) new ParNewMemoryManager();
  72 }
  73 
  74 GCMemoryManager* MemoryManager::get_cms_memory_manager() {
  75   return (GCMemoryManager*) new CMSMemoryManager();
  76 }
  77 
  78 GCMemoryManager* MemoryManager::get_psScavenge_memory_manager() {
  79   return (GCMemoryManager*) new PSScavengeMemoryManager();
  80 }
  81 
  82 GCMemoryManager* MemoryManager::get_psMarkSweep_memory_manager() {
  83   return (GCMemoryManager*) new PSMarkSweepMemoryManager();
  84 }
  85 
  86 GCMemoryManager* MemoryManager::get_g1YoungGen_memory_manager() {
  87   return (GCMemoryManager*) new G1YoungGenMemoryManager();
  88 }
  89 
  90 GCMemoryManager* MemoryManager::get_g1OldGen_memory_manager() {
  91   return (GCMemoryManager*) new G1OldGenMemoryManager();
  92 }
  93 
  94 instanceOop MemoryManager::get_memory_manager_instance(TRAPS) {
  95   // Must do an acquire so as to force ordering of subsequent
  96   // loads from anything _memory_mgr_obj points to or implies.
  97   instanceOop mgr_obj = OrderAccess::load_acquire(&_memory_mgr_obj);
  98   if (mgr_obj == NULL) {
  99     // It's ok for more than one thread to execute the code up to the locked region.
 100     // Extra manager instances will just be gc'ed.
 101     Klass* k = Management::sun_management_ManagementFactoryHelper_klass(CHECK_0);
 102 
 103     Handle mgr_name = java_lang_String::create_from_str(name(), CHECK_0);
 104 
 105     JavaValue result(T_OBJECT);
 106     JavaCallArguments args;
 107     args.push_oop(mgr_name);    // Argument 1
 108 
 109     Symbol* method_name = NULL;
 110     Symbol* signature = NULL;
 111     if (is_gc_memory_manager()) {
 112       Klass* extKlass = Management::com_sun_management_internal_GarbageCollectorExtImpl_klass(CHECK_0);
 113       // com.sun.management.GarbageCollectorMXBean is in jdk.management module which may not be present.




  42   (void)const_cast<instanceOop&>(_memory_mgr_obj = instanceOop(NULL));
  43 }
  44 
  45 void MemoryManager::add_pool(MemoryPool* pool) {
  46   assert(_num_pools < MemoryManager::max_num_pools, "_num_pools exceeds the max");
  47   if (_num_pools < MemoryManager::max_num_pools) {
  48     _pools[_num_pools] = pool;
  49     _num_pools++;
  50   }
  51   pool->add_manager(this);
  52 }
  53 
  54 MemoryManager* MemoryManager::get_code_cache_memory_manager() {
  55   return (MemoryManager*) new CodeCacheMemoryManager();
  56 }
  57 
  58 MemoryManager* MemoryManager::get_metaspace_memory_manager() {
  59   return (MemoryManager*) new MetaspaceMemoryManager();
  60 }
  61 
































  62 instanceOop MemoryManager::get_memory_manager_instance(TRAPS) {
  63   // Must do an acquire so as to force ordering of subsequent
  64   // loads from anything _memory_mgr_obj points to or implies.
  65   instanceOop mgr_obj = OrderAccess::load_acquire(&_memory_mgr_obj);
  66   if (mgr_obj == NULL) {
  67     // It's ok for more than one thread to execute the code up to the locked region.
  68     // Extra manager instances will just be gc'ed.
  69     Klass* k = Management::sun_management_ManagementFactoryHelper_klass(CHECK_0);
  70 
  71     Handle mgr_name = java_lang_String::create_from_str(name(), CHECK_0);
  72 
  73     JavaValue result(T_OBJECT);
  74     JavaCallArguments args;
  75     args.push_oop(mgr_name);    // Argument 1
  76 
  77     Symbol* method_name = NULL;
  78     Symbol* signature = NULL;
  79     if (is_gc_memory_manager()) {
  80       Klass* extKlass = Management::com_sun_management_internal_GarbageCollectorExtImpl_klass(CHECK_0);
  81       // com.sun.management.GarbageCollectorMXBean is in jdk.management module which may not be present.


< prev index next >