< prev index next >

src/share/vm/memory/genCollectedHeap.cpp

Print this page




 150   assert(alignment % pageSize == 0, "Must be");
 151 
 152   GenerationSpec* young_spec = gen_policy()->young_gen_spec();
 153   GenerationSpec* old_spec = gen_policy()->old_gen_spec();
 154 
 155   // Check for overflow.
 156   size_t total_reserved = young_spec->max_size() + old_spec->max_size();
 157   if (total_reserved < young_spec->max_size()) {
 158     vm_exit_during_initialization("The size of the object heap + VM data exceeds "
 159                                   "the maximum representable size");
 160   }
 161   assert(total_reserved % alignment == 0,
 162          err_msg("Gen size; total_reserved=" SIZE_FORMAT ", alignment="
 163                  SIZE_FORMAT, total_reserved, alignment));
 164 
 165   *heap_rs = Universe::reserve_heap(total_reserved, alignment);
 166   return heap_rs->base();
 167 }
 168 
 169 void GenCollectedHeap::post_initialize() {
 170   SharedHeap::post_initialize();

 171   GenCollectorPolicy *policy = (GenCollectorPolicy *)collector_policy();
 172   guarantee(policy->is_generation_policy(), "Illegal policy type");
 173   assert((_young_gen->kind() == Generation::DefNew) ||
 174          (_young_gen->kind() == Generation::ParNew),
 175     "Wrong youngest generation type");
 176   DefNewGeneration* def_new_gen = (DefNewGeneration*)_young_gen;
 177 
 178   assert(_old_gen->kind() == Generation::ConcurrentMarkSweep ||
 179          _old_gen->kind() == Generation::MarkSweepCompact,
 180     "Wrong generation kind");
 181 
 182   policy->initialize_size_policy(def_new_gen->eden()->capacity(),
 183                                  _old_gen->capacity(),
 184                                  def_new_gen->from()->capacity());
 185   policy->initialize_gc_policy_counters();
 186 }
 187 
 188 void GenCollectedHeap::ref_processing_init() {
 189   SharedHeap::ref_processing_init();
 190   _young_gen->ref_processor_init();
 191   _old_gen->ref_processor_init();
 192 }
 193 
 194 size_t GenCollectedHeap::capacity() const {
 195   return _young_gen->capacity() + _old_gen->capacity();
 196 }
 197 
 198 size_t GenCollectedHeap::used() const {
 199   return _young_gen->used() + _old_gen->used();
 200 }
 201 
 202 // Save the "used_region" for generations level and lower.
 203 void GenCollectedHeap::save_used_regions(int level) {
 204   assert(level >= 0, "Illegal level parameter");
 205   assert(level < _n_gens, "Illegal level parameter");
 206   if (level == 1) {
 207     _old_gen->save_used_region();
 208   }
 209   _young_gen->save_used_region();




 150   assert(alignment % pageSize == 0, "Must be");
 151 
 152   GenerationSpec* young_spec = gen_policy()->young_gen_spec();
 153   GenerationSpec* old_spec = gen_policy()->old_gen_spec();
 154 
 155   // Check for overflow.
 156   size_t total_reserved = young_spec->max_size() + old_spec->max_size();
 157   if (total_reserved < young_spec->max_size()) {
 158     vm_exit_during_initialization("The size of the object heap + VM data exceeds "
 159                                   "the maximum representable size");
 160   }
 161   assert(total_reserved % alignment == 0,
 162          err_msg("Gen size; total_reserved=" SIZE_FORMAT ", alignment="
 163                  SIZE_FORMAT, total_reserved, alignment));
 164 
 165   *heap_rs = Universe::reserve_heap(total_reserved, alignment);
 166   return heap_rs->base();
 167 }
 168 
 169 void GenCollectedHeap::post_initialize() {
 170   CollectedHeap::post_initialize();
 171   ref_processing_init();
 172   GenCollectorPolicy *policy = (GenCollectorPolicy *)collector_policy();
 173   guarantee(policy->is_generation_policy(), "Illegal policy type");
 174   assert((_young_gen->kind() == Generation::DefNew) ||
 175          (_young_gen->kind() == Generation::ParNew),
 176     "Wrong youngest generation type");
 177   DefNewGeneration* def_new_gen = (DefNewGeneration*)_young_gen;
 178 
 179   assert(_old_gen->kind() == Generation::ConcurrentMarkSweep ||
 180          _old_gen->kind() == Generation::MarkSweepCompact,
 181     "Wrong generation kind");
 182 
 183   policy->initialize_size_policy(def_new_gen->eden()->capacity(),
 184                                  _old_gen->capacity(),
 185                                  def_new_gen->from()->capacity());
 186   policy->initialize_gc_policy_counters();
 187 }
 188 
 189 void GenCollectedHeap::ref_processing_init() {

 190   _young_gen->ref_processor_init();
 191   _old_gen->ref_processor_init();
 192 }
 193 
 194 size_t GenCollectedHeap::capacity() const {
 195   return _young_gen->capacity() + _old_gen->capacity();
 196 }
 197 
 198 size_t GenCollectedHeap::used() const {
 199   return _young_gen->used() + _old_gen->used();
 200 }
 201 
 202 // Save the "used_region" for generations level and lower.
 203 void GenCollectedHeap::save_used_regions(int level) {
 204   assert(level >= 0, "Illegal level parameter");
 205   assert(level < _n_gens, "Illegal level parameter");
 206   if (level == 1) {
 207     _old_gen->save_used_region();
 208   }
 209   _young_gen->save_used_region();


< prev index next >