< prev index next >
src/hotspot/share/gc/z/zRelocationSetSelector.cpp
Print this page
@@ -101,10 +101,11 @@
// a candidate relocation set and calculate the maximum space requirement for
// their live objects.
const size_t npages = _registered_pages.size();
size_t selected_from = 0;
size_t selected_to = 0;
+ size_t selected_from_size = 0;
size_t from_size = 0;
semi_sort();
for (size_t from = 1; from <= npages; from++) {
@@ -125,10 +126,11 @@
const size_t diff_to = to - selected_to;
const double diff_reclaimable = 100 - percent_of(diff_to, diff_from);
if (diff_reclaimable > ZFragmentationLimit) {
selected_from = from;
selected_to = to;
+ selected_from_size = from_size;
}
log_trace(gc, reloc)("Candidate Relocation Set (%s Pages): "
SIZE_FORMAT "->" SIZE_FORMAT ", %.1f%% relative defragmentation, %s",
_name, from, to, diff_reclaimable, (selected_from == from) ? "Selected" : "Rejected");
@@ -136,11 +138,11 @@
// Finalize selection
_nselected = selected_from;
// Update statistics
- _relocating = from_size;
+ _relocating = selected_from_size;
for (size_t i = _nselected; i < npages; i++) {
ZPage* const page = _sorted_pages[i];
_fragmentation += page->size() - page->live_bytes();
}
< prev index next >