inline HeapRegion* G1CollectedHeap::heap_region_containing(const T addr) const { HeapRegion* hr = _hrs.addr_to_region((HeapWord*) addr); // hr can be null if addr in perm_gen if (hr != NULL && hr->continuesHumongous()) { hr = hr->humongous_start_region(); } return hr; }
void HeapRegionSeq::print_empty_runs() { int empty_run = 0; int n_empty = 0; int empty_run_start; for (int i = 0; i < _regions.length(); i++) { HeapRegion* r = _regions.at(i); if (r->continuesHumongous()) continue; if (r->is_empty()) { assert(!r->isHumongous(), "H regions should not be empty."); if (empty_run == 0) empty_run_start = i; empty_run++; n_empty++; } else { if (empty_run > 0) { gclog_or_tty->print(" %d:%d", empty_run_start, empty_run); empty_run = 0; } } } if (empty_run > 0) { gclog_or_tty->print(" %d:%d", empty_run_start, empty_run); } gclog_or_tty->print_cr(" [tot = %d]", n_empty); }