191 size_t current_shrink_factor = _shrink_factor;
192 _shrink_factor = 0;
193
194 // We don't have floating point command-line arguments
195 // Note: argument processing ensures that MinHeapFreeRatio < 100.
196 const double minimum_free_percentage = MinHeapFreeRatio / 100.0;
197 const double maximum_used_percentage = 1.0 - minimum_free_percentage;
198
199 // Compute some numbers about the state of the heap.
200 const size_t used_after_gc = used();
201 const size_t capacity_after_gc = capacity();
202
203 const double min_tmp = used_after_gc / maximum_used_percentage;
204 size_t minimum_desired_capacity = (size_t)MIN2(min_tmp, double(max_uintx));
205 // Don't shrink less than the initial generation size
206 minimum_desired_capacity = MAX2(minimum_desired_capacity, initial_size());
207 assert(used_after_gc <= minimum_desired_capacity, "sanity check");
208
209 const size_t free_after_gc = free();
210 const double free_percentage = ((double)free_after_gc) / capacity_after_gc;
211 log_trace(gc, heap)("TenuredGeneration::compute_new_size:");
212 log_trace(gc, heap)(" minimum_free_percentage: %6.2f maximum_used_percentage: %6.2f",
213 minimum_free_percentage,
214 maximum_used_percentage);
215 log_trace(gc, heap)(" free_after_gc : %6.1fK used_after_gc : %6.1fK capacity_after_gc : %6.1fK",
216 free_after_gc / (double) K,
217 used_after_gc / (double) K,
218 capacity_after_gc / (double) K);
219 log_trace(gc, heap)(" free_percentage: %6.2f", free_percentage);
220
221 if (capacity_after_gc < minimum_desired_capacity) {
222 // If we have less free space than we want then expand
223 size_t expand_bytes = minimum_desired_capacity - capacity_after_gc;
224 // Don't expand unless it's significant
225 if (expand_bytes >= _min_heap_delta_bytes) {
226 expand(expand_bytes, 0); // safe if expansion fails
227 }
228 log_trace(gc, heap)(" expanding: minimum_desired_capacity: %6.1fK expand_bytes: %6.1fK _min_heap_delta_bytes: %6.1fK",
229 minimum_desired_capacity / (double) K,
230 expand_bytes / (double) K,
231 _min_heap_delta_bytes / (double) K);
|
191 size_t current_shrink_factor = _shrink_factor;
192 _shrink_factor = 0;
193
194 // We don't have floating point command-line arguments
195 // Note: argument processing ensures that MinHeapFreeRatio < 100.
196 const double minimum_free_percentage = MinHeapFreeRatio / 100.0;
197 const double maximum_used_percentage = 1.0 - minimum_free_percentage;
198
199 // Compute some numbers about the state of the heap.
200 const size_t used_after_gc = used();
201 const size_t capacity_after_gc = capacity();
202
203 const double min_tmp = used_after_gc / maximum_used_percentage;
204 size_t minimum_desired_capacity = (size_t)MIN2(min_tmp, double(max_uintx));
205 // Don't shrink less than the initial generation size
206 minimum_desired_capacity = MAX2(minimum_desired_capacity, initial_size());
207 assert(used_after_gc <= minimum_desired_capacity, "sanity check");
208
209 const size_t free_after_gc = free();
210 const double free_percentage = ((double)free_after_gc) / capacity_after_gc;
211 log_trace(gc, heap)("CardGeneration::compute_new_size:");
212 log_trace(gc, heap)(" minimum_free_percentage: %6.2f maximum_used_percentage: %6.2f",
213 minimum_free_percentage,
214 maximum_used_percentage);
215 log_trace(gc, heap)(" free_after_gc : %6.1fK used_after_gc : %6.1fK capacity_after_gc : %6.1fK",
216 free_after_gc / (double) K,
217 used_after_gc / (double) K,
218 capacity_after_gc / (double) K);
219 log_trace(gc, heap)(" free_percentage: %6.2f", free_percentage);
220
221 if (capacity_after_gc < minimum_desired_capacity) {
222 // If we have less free space than we want then expand
223 size_t expand_bytes = minimum_desired_capacity - capacity_after_gc;
224 // Don't expand unless it's significant
225 if (expand_bytes >= _min_heap_delta_bytes) {
226 expand(expand_bytes, 0); // safe if expansion fails
227 }
228 log_trace(gc, heap)(" expanding: minimum_desired_capacity: %6.1fK expand_bytes: %6.1fK _min_heap_delta_bytes: %6.1fK",
229 minimum_desired_capacity / (double) K,
230 expand_bytes / (double) K,
231 _min_heap_delta_bytes / (double) K);
|