338 assert_lock_strong(ExpandHeap_lock);
339 virtual_space()->shrink_by(bytes);
340 post_resize();
341
342 size_t new_mem_size = virtual_space()->committed_size();
343 size_t old_mem_size = new_mem_size + bytes;
344 log_debug(gc)("Shrinking %s from " SIZE_FORMAT "K by " SIZE_FORMAT "K to " SIZE_FORMAT "K",
345 name(), old_mem_size/K, bytes/K, new_mem_size/K);
346 }
347 }
348
349 void PSOldGen::resize(size_t desired_free_space) {
350 const size_t alignment = virtual_space()->alignment();
351 const size_t size_before = virtual_space()->committed_size();
352 size_t new_size = used_in_bytes() + desired_free_space;
353 if (new_size < used_in_bytes()) {
354 // Overflowed the addition.
355 new_size = gen_size_limit();
356 }
357 // Adjust according to our min and max
358 new_size = MAX2(MIN2(new_size, gen_size_limit()), min_gen_size());
359
360 assert(gen_size_limit() >= reserved().byte_size(), "max new size problem?");
361 new_size = align_up(new_size, alignment);
362
363 const size_t current_size = capacity_in_bytes();
364
365 log_trace(gc, ergo)("AdaptiveSizePolicy::old generation size: "
366 "desired free: " SIZE_FORMAT " used: " SIZE_FORMAT
367 " new size: " SIZE_FORMAT " current size " SIZE_FORMAT
368 " gen limits: " SIZE_FORMAT " / " SIZE_FORMAT,
369 desired_free_space, used_in_bytes(), new_size, current_size,
370 gen_size_limit(), min_gen_size());
371
372 if (new_size == current_size) {
373 // No change requested
374 return;
375 }
376 if (new_size > current_size) {
377 size_t change_bytes = new_size - current_size;
378 expand(change_bytes);
|
338 assert_lock_strong(ExpandHeap_lock);
339 virtual_space()->shrink_by(bytes);
340 post_resize();
341
342 size_t new_mem_size = virtual_space()->committed_size();
343 size_t old_mem_size = new_mem_size + bytes;
344 log_debug(gc)("Shrinking %s from " SIZE_FORMAT "K by " SIZE_FORMAT "K to " SIZE_FORMAT "K",
345 name(), old_mem_size/K, bytes/K, new_mem_size/K);
346 }
347 }
348
349 void PSOldGen::resize(size_t desired_free_space) {
350 const size_t alignment = virtual_space()->alignment();
351 const size_t size_before = virtual_space()->committed_size();
352 size_t new_size = used_in_bytes() + desired_free_space;
353 if (new_size < used_in_bytes()) {
354 // Overflowed the addition.
355 new_size = gen_size_limit();
356 }
357 // Adjust according to our min and max
358 new_size = clamp(new_size, min_gen_size(), gen_size_limit());
359
360 assert(gen_size_limit() >= reserved().byte_size(), "max new size problem?");
361 new_size = align_up(new_size, alignment);
362
363 const size_t current_size = capacity_in_bytes();
364
365 log_trace(gc, ergo)("AdaptiveSizePolicy::old generation size: "
366 "desired free: " SIZE_FORMAT " used: " SIZE_FORMAT
367 " new size: " SIZE_FORMAT " current size " SIZE_FORMAT
368 " gen limits: " SIZE_FORMAT " / " SIZE_FORMAT,
369 desired_free_space, used_in_bytes(), new_size, current_size,
370 gen_size_limit(), min_gen_size());
371
372 if (new_size == current_size) {
373 // No change requested
374 return;
375 }
376 if (new_size > current_size) {
377 size_t change_bytes = new_size - current_size;
378 expand(change_bytes);
|