< prev index next >

src/share/vm/memory/defNewGeneration.cpp

Print this page




 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


< prev index next >