< prev index next >

src/hotspot/share/gc/parallel/parallelScavengeHeap.cpp

Print this page
rev 60637 : 8252221: Use multiple workers for Parallel GC pre-touching
Reviewed-by:
Contributed-by: amith.pawar@gmail.com


  71                        heap_rs.size());
  72 
  73   initialize_reserved_region(heap_rs);
  74 
  75   PSCardTable* card_table = new PSCardTable(heap_rs.region());
  76   card_table->initialize();
  77   CardTableBarrierSet* const barrier_set = new CardTableBarrierSet(card_table);
  78   barrier_set->initialize();
  79   BarrierSet::set_barrier_set(barrier_set);
  80 
  81   // Make up the generations
  82   assert(MinOldSize <= OldSize && OldSize <= MaxOldSize, "Parameter check");
  83   assert(MinNewSize <= NewSize && NewSize <= MaxNewSize, "Parameter check");
  84 
  85   // Layout the reserved space for the generations.
  86   // If OldGen is allocated on nv-dimm, we need to split the reservation (this is required for windows).
  87   ReservedSpace old_rs   = heap_rs.first_part(MaxOldSize, ParallelArguments::is_heterogeneous_heap() /* split */);
  88   ReservedSpace young_rs = heap_rs.last_part(MaxOldSize);
  89   assert(young_rs.size() == MaxNewSize, "Didn't reserve all of the heap");
  90 



  91   // Create and initialize the generations.
  92   _young_gen = new PSYoungGen(
  93       young_rs,
  94       NewSize,
  95       MinNewSize,
  96       MaxNewSize);
  97   _old_gen = new PSOldGen(
  98       old_rs,
  99       OldSize,
 100       MinOldSize,
 101       MaxOldSize,
 102       "old", 1);
 103 
 104   assert(young_gen()->max_gen_size() == young_rs.size(),"Consistency check");
 105   assert(old_gen()->max_gen_size() == old_rs.size(), "Consistency check");
 106 
 107   double max_gc_pause_sec = ((double) MaxGCPauseMillis)/1000.0;
 108   double max_gc_minor_pause_sec = ((double) MaxGCMinorPauseMillis)/1000.0;
 109 
 110   const size_t eden_capacity = _young_gen->eden_space()->capacity_in_bytes();


 114     new PSAdaptiveSizePolicy(eden_capacity,
 115                              initial_promo_size,
 116                              young_gen()->to_space()->capacity_in_bytes(),
 117                              GenAlignment,
 118                              max_gc_pause_sec,
 119                              max_gc_minor_pause_sec,
 120                              GCTimeRatio
 121                              );
 122 
 123   assert(ParallelArguments::is_heterogeneous_heap() ||
 124          (old_gen()->virtual_space()->high_boundary() ==
 125           young_gen()->virtual_space()->low_boundary()),
 126          "Boundaries must meet");
 127   // initialize the policy counters - 2 collectors, 2 generations
 128   _gc_policy_counters =
 129     new PSGCAdaptivePolicyCounters("ParScav:MSC", 2, 2, _size_policy);
 130 
 131   if (!PSParallelCompact::initialize()) {
 132     return JNI_ENOMEM;
 133   }
 134 
 135   // Set up WorkGang
 136   _workers.initialize_workers();
 137 
 138   GCInitLogger::print();
 139 
 140   return JNI_OK;
 141 }
 142 
 143 void ParallelScavengeHeap::initialize_serviceability() {
 144 
 145   _eden_pool = new EdenMutableSpacePool(_young_gen,
 146                                         _young_gen->eden_space(),
 147                                         "PS Eden Space",
 148                                         false /* support_usage_threshold */);
 149 
 150   _survivor_pool = new SurvivorMutableSpacePool(_young_gen,
 151                                                 "PS Survivor Space",
 152                                                 false /* support_usage_threshold */);
 153 
 154   _old_pool = new PSGenerationPool(_old_gen,
 155                                    "PS Old Gen",
 156                                    true /* support_usage_threshold */);




  71                        heap_rs.size());
  72 
  73   initialize_reserved_region(heap_rs);
  74 
  75   PSCardTable* card_table = new PSCardTable(heap_rs.region());
  76   card_table->initialize();
  77   CardTableBarrierSet* const barrier_set = new CardTableBarrierSet(card_table);
  78   barrier_set->initialize();
  79   BarrierSet::set_barrier_set(barrier_set);
  80 
  81   // Make up the generations
  82   assert(MinOldSize <= OldSize && OldSize <= MaxOldSize, "Parameter check");
  83   assert(MinNewSize <= NewSize && NewSize <= MaxNewSize, "Parameter check");
  84 
  85   // Layout the reserved space for the generations.
  86   // If OldGen is allocated on nv-dimm, we need to split the reservation (this is required for windows).
  87   ReservedSpace old_rs   = heap_rs.first_part(MaxOldSize, ParallelArguments::is_heterogeneous_heap() /* split */);
  88   ReservedSpace young_rs = heap_rs.last_part(MaxOldSize);
  89   assert(young_rs.size() == MaxNewSize, "Didn't reserve all of the heap");
  90 
  91   // Set up WorkGang
  92   _workers.initialize_workers();
  93 
  94   // Create and initialize the generations.
  95   _young_gen = new PSYoungGen(
  96       young_rs,
  97       NewSize,
  98       MinNewSize,
  99       MaxNewSize);
 100   _old_gen = new PSOldGen(
 101       old_rs,
 102       OldSize,
 103       MinOldSize,
 104       MaxOldSize,
 105       "old", 1);
 106 
 107   assert(young_gen()->max_gen_size() == young_rs.size(),"Consistency check");
 108   assert(old_gen()->max_gen_size() == old_rs.size(), "Consistency check");
 109 
 110   double max_gc_pause_sec = ((double) MaxGCPauseMillis)/1000.0;
 111   double max_gc_minor_pause_sec = ((double) MaxGCMinorPauseMillis)/1000.0;
 112 
 113   const size_t eden_capacity = _young_gen->eden_space()->capacity_in_bytes();


 117     new PSAdaptiveSizePolicy(eden_capacity,
 118                              initial_promo_size,
 119                              young_gen()->to_space()->capacity_in_bytes(),
 120                              GenAlignment,
 121                              max_gc_pause_sec,
 122                              max_gc_minor_pause_sec,
 123                              GCTimeRatio
 124                              );
 125 
 126   assert(ParallelArguments::is_heterogeneous_heap() ||
 127          (old_gen()->virtual_space()->high_boundary() ==
 128           young_gen()->virtual_space()->low_boundary()),
 129          "Boundaries must meet");
 130   // initialize the policy counters - 2 collectors, 2 generations
 131   _gc_policy_counters =
 132     new PSGCAdaptivePolicyCounters("ParScav:MSC", 2, 2, _size_policy);
 133 
 134   if (!PSParallelCompact::initialize()) {
 135     return JNI_ENOMEM;
 136   }



 137 
 138   GCInitLogger::print();
 139 
 140   return JNI_OK;
 141 }
 142 
 143 void ParallelScavengeHeap::initialize_serviceability() {
 144 
 145   _eden_pool = new EdenMutableSpacePool(_young_gen,
 146                                         _young_gen->eden_space(),
 147                                         "PS Eden Space",
 148                                         false /* support_usage_threshold */);
 149 
 150   _survivor_pool = new SurvivorMutableSpacePool(_young_gen,
 151                                                 "PS Survivor Space",
 152                                                 false /* support_usage_threshold */);
 153 
 154   _old_pool = new PSGenerationPool(_old_gen,
 155                                    "PS Old Gen",
 156                                    true /* support_usage_threshold */);


< prev index next >