< prev index next >

src/hotspot/share/gc/shared/genCollectedHeap.cpp

Print this page




  93   // HeapWordSize).
  94   guarantee(HeapWordSize == wordSize, "HeapWordSize must equal wordSize");
  95 
  96   // Allocate space for the heap.
  97 
  98   char* heap_address;
  99   ReservedSpace heap_rs;
 100 
 101   size_t heap_alignment = collector_policy()->heap_alignment();
 102 
 103   heap_address = allocate(heap_alignment, &heap_rs);
 104 
 105   if (!heap_rs.is_reserved()) {
 106     vm_shutdown_during_initialization(
 107       "Could not reserve enough space for object heap");
 108     return JNI_ENOMEM;
 109   }
 110 
 111   initialize_reserved_region((HeapWord*)heap_rs.base(), (HeapWord*)(heap_rs.base() + heap_rs.size()));
 112 
 113   _rem_set = new CardTableRS(reserved_region());
 114   _rem_set->initialize();
 115   CardTableBarrierSet *bs = new CardTableBarrierSet(_rem_set);
 116   bs->initialize();
 117   set_barrier_set(bs);
 118 
 119   ReservedSpace young_rs = heap_rs.first_part(_young_gen_spec->max_size(), false, false);
 120   _young_gen = _young_gen_spec->init(young_rs, rem_set());
 121   heap_rs = heap_rs.last_part(_young_gen_spec->max_size());
 122 
 123   ReservedSpace old_rs = heap_rs.first_part(_old_gen_spec->max_size(), false, false);
 124   _old_gen = _old_gen_spec->init(old_rs, rem_set());
 125   clear_incremental_collection_failed();
 126 
 127   return JNI_OK;




 128 }
 129 
 130 void GenCollectedHeap::initialize_size_policy(size_t init_eden_size,
 131                                               size_t init_promo_size,
 132                                               size_t init_survivor_size) {
 133   const double max_gc_pause_sec = ((double) MaxGCPauseMillis) / 1000.0;
 134   _size_policy = new AdaptiveSizePolicy(init_eden_size,
 135                                         init_promo_size,
 136                                         init_survivor_size,
 137                                         max_gc_pause_sec,
 138                                         GCTimeRatio);
 139 }
 140 
 141 char* GenCollectedHeap::allocate(size_t alignment,
 142                                  ReservedSpace* heap_rs){
 143   // Now figure out the total size.
 144   const size_t pageSize = UseLargePages ? os::large_page_size() : os::vm_page_size();
 145   assert(alignment % pageSize == 0, "Must be");
 146 
 147   // Check for overflow.




  93   // HeapWordSize).
  94   guarantee(HeapWordSize == wordSize, "HeapWordSize must equal wordSize");
  95 
  96   // Allocate space for the heap.
  97 
  98   char* heap_address;
  99   ReservedSpace heap_rs;
 100 
 101   size_t heap_alignment = collector_policy()->heap_alignment();
 102 
 103   heap_address = allocate(heap_alignment, &heap_rs);
 104 
 105   if (!heap_rs.is_reserved()) {
 106     vm_shutdown_during_initialization(
 107       "Could not reserve enough space for object heap");
 108     return JNI_ENOMEM;
 109   }
 110 
 111   initialize_reserved_region((HeapWord*)heap_rs.base(), (HeapWord*)(heap_rs.base() + heap_rs.size()));
 112 
 113   _rem_set = create_rem_set(reserved_region());
 114   _rem_set->initialize();
 115   CardTableBarrierSet *bs = new CardTableBarrierSet(_rem_set);
 116   bs->initialize();
 117   set_barrier_set(bs);
 118 
 119   ReservedSpace young_rs = heap_rs.first_part(_young_gen_spec->max_size(), false, false);
 120   _young_gen = _young_gen_spec->init(young_rs, rem_set());
 121   heap_rs = heap_rs.last_part(_young_gen_spec->max_size());
 122 
 123   ReservedSpace old_rs = heap_rs.first_part(_old_gen_spec->max_size(), false, false);
 124   _old_gen = _old_gen_spec->init(old_rs, rem_set());
 125   clear_incremental_collection_failed();
 126 
 127   return JNI_OK;
 128 }
 129 
 130 CardTableRS* GenCollectedHeap::create_rem_set(const MemRegion& reserved_region) {
 131   return new CardTableRS(reserved_region, false /* scan_concurrently */);
 132 }
 133 
 134 void GenCollectedHeap::initialize_size_policy(size_t init_eden_size,
 135                                               size_t init_promo_size,
 136                                               size_t init_survivor_size) {
 137   const double max_gc_pause_sec = ((double) MaxGCPauseMillis) / 1000.0;
 138   _size_policy = new AdaptiveSizePolicy(init_eden_size,
 139                                         init_promo_size,
 140                                         init_survivor_size,
 141                                         max_gc_pause_sec,
 142                                         GCTimeRatio);
 143 }
 144 
 145 char* GenCollectedHeap::allocate(size_t alignment,
 146                                  ReservedSpace* heap_rs){
 147   // Now figure out the total size.
 148   const size_t pageSize = UseLargePages ? os::large_page_size() : os::vm_page_size();
 149   assert(alignment % pageSize == 0, "Must be");
 150 
 151   // Check for overflow.


< prev index next >