361 gclog_or_tty->print_cr("Garbage collection disabled, "
362 "expanded heap instead");
363 }
364 }
365
366 return success;
367 }
368
369
370 void DefNewGeneration::compute_new_size() {
371 // This is called after a gc that includes the following generation
372 // (which is required to exist.) So from-space will normally be empty.
373 // Note that we check both spaces, since if scavenge failed they revert roles.
374 // If not we bail out (otherwise we would have to relocate the objects)
375 if (!from()->is_empty() || !to()->is_empty()) {
376 return;
377 }
378
379 int next_level = level() + 1;
380 GenCollectedHeap* gch = GenCollectedHeap::heap();
381 assert(next_level < gch->n_gens(),
382 "DefNewGeneration cannot be an oldest gen");
383
384 Generation* old_gen = gch->old_gen();
385 size_t old_size = old_gen->capacity();
386 size_t new_size_before = _virtual_space.committed_size();
387 size_t min_new_size = spec()->init_size();
388 size_t max_new_size = reserved().byte_size();
389 assert(min_new_size <= new_size_before &&
390 new_size_before <= max_new_size,
391 "just checking");
392 // All space sizes must be multiples of Generation::GenGrain.
393 size_t alignment = Generation::GenGrain;
394
395 // Compute desired new generation size based on NewRatio and
396 // NewSizeThreadIncrease
397 size_t desired_new_size = old_size/NewRatio;
398 int threads_count = Threads::number_of_non_daemon_threads();
399 size_t thread_increase_size = threads_count * NewSizeThreadIncrease;
400 desired_new_size = align_size_up(desired_new_size + thread_increase_size, alignment);
401
402 // Adjust new generation size
|
361 gclog_or_tty->print_cr("Garbage collection disabled, "
362 "expanded heap instead");
363 }
364 }
365
366 return success;
367 }
368
369
370 void DefNewGeneration::compute_new_size() {
371 // This is called after a gc that includes the following generation
372 // (which is required to exist.) So from-space will normally be empty.
373 // Note that we check both spaces, since if scavenge failed they revert roles.
374 // If not we bail out (otherwise we would have to relocate the objects)
375 if (!from()->is_empty() || !to()->is_empty()) {
376 return;
377 }
378
379 int next_level = level() + 1;
380 GenCollectedHeap* gch = GenCollectedHeap::heap();
381 assert(next_level == 1, "DefNewGeneration must be a young gen");
382
383 Generation* old_gen = gch->old_gen();
384 size_t old_size = old_gen->capacity();
385 size_t new_size_before = _virtual_space.committed_size();
386 size_t min_new_size = spec()->init_size();
387 size_t max_new_size = reserved().byte_size();
388 assert(min_new_size <= new_size_before &&
389 new_size_before <= max_new_size,
390 "just checking");
391 // All space sizes must be multiples of Generation::GenGrain.
392 size_t alignment = Generation::GenGrain;
393
394 // Compute desired new generation size based on NewRatio and
395 // NewSizeThreadIncrease
396 size_t desired_new_size = old_size/NewRatio;
397 int threads_count = Threads::number_of_non_daemon_threads();
398 size_t thread_increase_size = threads_count * NewSizeThreadIncrease;
399 desired_new_size = align_size_up(desired_new_size + thread_increase_size, alignment);
400
401 // Adjust new generation size
|