1443 double expansion_region_num_d = perc * (double) _young_list_target_length;
1444 // We use ceiling so that if expansion_region_num_d is > 0.0 (but
1445 // less than 1.0) we'll get 1.
1446 expansion_region_num = (uint) ceil(expansion_region_num_d);
1447 } else {
1448 assert(expansion_region_num == 0, "sanity");
1449 }
1450 _young_list_max_length = _young_list_target_length + expansion_region_num;
1451 assert(_young_list_target_length <= _young_list_max_length, "post-condition");
1452 }
1453
1454 // Calculates survivor space parameters.
1455 void G1CollectorPolicy::update_survivors_policy() {
1456 double max_survivor_regions_d =
1457 (double) _young_list_target_length / (double) SurvivorRatio;
1458 // We use ceiling so that if max_survivor_regions_d is > 0.0 (but
1459 // smaller than 1.0) we'll get 1.
1460 _max_survivor_regions = (uint) ceil(max_survivor_regions_d);
1461
1462 _tenuring_threshold = _survivors_age_table.compute_tenuring_threshold(
1463 HeapRegion::GrainWords * _max_survivor_regions);
1464 }
1465
1466 bool G1CollectorPolicy::force_initial_mark_if_outside_cycle(
1467 GCCause::Cause gc_cause) {
1468 bool during_cycle = _g1->concurrent_mark()->cmThread()->during_cycle();
1469 if (!during_cycle) {
1470 ergo_verbose1(ErgoConcCycles,
1471 "request concurrent cycle initiation",
1472 ergo_format_reason("requested by GC cause")
1473 ergo_format_str("GC cause"),
1474 GCCause::to_string(gc_cause));
1475 set_initiate_conc_mark_if_possible();
1476 return true;
1477 } else {
1478 ergo_verbose1(ErgoConcCycles,
1479 "do not request concurrent cycle initiation",
1480 ergo_format_reason("concurrent cycle already in progress")
1481 ergo_format_str("GC cause"),
1482 GCCause::to_string(gc_cause));
1483 return false;
|
1443 double expansion_region_num_d = perc * (double) _young_list_target_length;
1444 // We use ceiling so that if expansion_region_num_d is > 0.0 (but
1445 // less than 1.0) we'll get 1.
1446 expansion_region_num = (uint) ceil(expansion_region_num_d);
1447 } else {
1448 assert(expansion_region_num == 0, "sanity");
1449 }
1450 _young_list_max_length = _young_list_target_length + expansion_region_num;
1451 assert(_young_list_target_length <= _young_list_max_length, "post-condition");
1452 }
1453
1454 // Calculates survivor space parameters.
1455 void G1CollectorPolicy::update_survivors_policy() {
1456 double max_survivor_regions_d =
1457 (double) _young_list_target_length / (double) SurvivorRatio;
1458 // We use ceiling so that if max_survivor_regions_d is > 0.0 (but
1459 // smaller than 1.0) we'll get 1.
1460 _max_survivor_regions = (uint) ceil(max_survivor_regions_d);
1461
1462 _tenuring_threshold = _survivors_age_table.compute_tenuring_threshold(
1463 HeapRegion::GrainWords * _max_survivor_regions, counters());
1464 }
1465
1466 bool G1CollectorPolicy::force_initial_mark_if_outside_cycle(
1467 GCCause::Cause gc_cause) {
1468 bool during_cycle = _g1->concurrent_mark()->cmThread()->during_cycle();
1469 if (!during_cycle) {
1470 ergo_verbose1(ErgoConcCycles,
1471 "request concurrent cycle initiation",
1472 ergo_format_reason("requested by GC cause")
1473 ergo_format_str("GC cause"),
1474 GCCause::to_string(gc_cause));
1475 set_initiate_conc_mark_if_possible();
1476 return true;
1477 } else {
1478 ergo_verbose1(ErgoConcCycles,
1479 "do not request concurrent cycle initiation",
1480 ergo_format_reason("concurrent cycle already in progress")
1481 ergo_format_str("GC cause"),
1482 GCCause::to_string(gc_cause));
1483 return false;
|