106 GcThreadCountClosure gctcc;
107 heap->gc_threads_do(&gctcc);
108 int count = gctcc.count();
109 if (count > 0) {
110 _minor_gc_manager->set_num_gc_threads(count);
111 _major_gc_manager->set_num_gc_threads(count);
112 }
113
114 // All memory pools and memory managers are initialized.
115 //
116 _minor_gc_manager->initialize_gc_stat_info();
117 _major_gc_manager->initialize_gc_stat_info();
118 }
119
120 // Add memory pools for GenCollectedHeap
121 // This function currently only supports two generations collected heap.
122 // The collector for GenCollectedHeap will have two memory managers.
123 void MemoryService::add_gen_collected_heap_info(GenCollectedHeap* heap) {
124 CollectorPolicy* policy = heap->collector_policy();
125
126 assert(policy->is_two_generation_policy(), "Only support two generations");
127 guarantee(heap->n_gens() == 2, "Only support two-generation heap");
128
129 TwoGenerationCollectorPolicy* two_gen_policy = policy->as_two_generation_policy();
130 if (two_gen_policy != NULL) {
131 GenerationSpec** specs = two_gen_policy->generations();
132 Generation::Name kind = specs[0]->name();
133 switch (kind) {
134 case Generation::DefNew:
135 _minor_gc_manager = MemoryManager::get_copy_memory_manager();
136 break;
137 #if INCLUDE_ALL_GCS
138 case Generation::ParNew:
139 case Generation::ASParNew:
140 _minor_gc_manager = MemoryManager::get_parnew_memory_manager();
141 break;
142 #endif // INCLUDE_ALL_GCS
143 default:
144 guarantee(false, "Unrecognized generation spec");
145 break;
146 }
147 if (policy->is_mark_sweep_policy()) {
148 _major_gc_manager = MemoryManager::get_msc_memory_manager();
149 #if INCLUDE_ALL_GCS
150 } else if (policy->is_concurrent_mark_sweep_policy()) {
151 _major_gc_manager = MemoryManager::get_cms_memory_manager();
|
106 GcThreadCountClosure gctcc;
107 heap->gc_threads_do(&gctcc);
108 int count = gctcc.count();
109 if (count > 0) {
110 _minor_gc_manager->set_num_gc_threads(count);
111 _major_gc_manager->set_num_gc_threads(count);
112 }
113
114 // All memory pools and memory managers are initialized.
115 //
116 _minor_gc_manager->initialize_gc_stat_info();
117 _major_gc_manager->initialize_gc_stat_info();
118 }
119
120 // Add memory pools for GenCollectedHeap
121 // This function currently only supports two generations collected heap.
122 // The collector for GenCollectedHeap will have two memory managers.
123 void MemoryService::add_gen_collected_heap_info(GenCollectedHeap* heap) {
124 CollectorPolicy* policy = heap->collector_policy();
125
126 assert(policy->is_generation_policy(), "Only support two generations");
127 guarantee(heap->n_gens() == 2, "Only support two-generation heap");
128
129 GenCollectorPolicy* gen_policy = policy->as_generation_policy();
130 if (gen_policy != NULL) {
131 GenerationSpec** specs = gen_policy->generations();
132 Generation::Name kind = specs[0]->name();
133 switch (kind) {
134 case Generation::DefNew:
135 _minor_gc_manager = MemoryManager::get_copy_memory_manager();
136 break;
137 #if INCLUDE_ALL_GCS
138 case Generation::ParNew:
139 case Generation::ASParNew:
140 _minor_gc_manager = MemoryManager::get_parnew_memory_manager();
141 break;
142 #endif // INCLUDE_ALL_GCS
143 default:
144 guarantee(false, "Unrecognized generation spec");
145 break;
146 }
147 if (policy->is_mark_sweep_policy()) {
148 _major_gc_manager = MemoryManager::get_msc_memory_manager();
149 #if INCLUDE_ALL_GCS
150 } else if (policy->is_concurrent_mark_sweep_policy()) {
151 _major_gc_manager = MemoryManager::get_cms_memory_manager();
|