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 */);
|