src/share/vm/gc_implementation/g1/g1RemSetSummary.cpp

Print this page
rev 5061 : imported patch nmethod_changes_original

*** 125,160 **** _sampling_thread_vtime = other->sampling_thread_vtime() - _sampling_thread_vtime; } class HRRSStatsIter: public HeapRegionClosure { size_t _occupied; ! size_t _total_mem_sz; ! size_t _max_mem_sz; ! HeapRegion* _max_mem_sz_region; public: HRRSStatsIter() : _occupied(0), ! _total_mem_sz(0), ! _max_mem_sz(0), ! _max_mem_sz_region(NULL) {} bool doHeapRegion(HeapRegion* r) { ! size_t mem_sz = r->rem_set()->mem_size(); ! if (mem_sz > _max_mem_sz) { ! _max_mem_sz = mem_sz; ! _max_mem_sz_region = r; } ! _total_mem_sz += mem_sz; ! size_t occ = r->rem_set()->occupied(); _occupied += occ; return false; } ! size_t total_mem_sz() { return _total_mem_sz; } ! size_t max_mem_sz() { return _max_mem_sz; } size_t occupied() { return _occupied; } - HeapRegion* max_mem_sz_region() { return _max_mem_sz_region; } }; double calc_percentage(size_t numerator, size_t denominator) { if (denominator != 0) { return (double)numerator / denominator * 100.0; --- 125,183 ---- _sampling_thread_vtime = other->sampling_thread_vtime() - _sampling_thread_vtime; } class HRRSStatsIter: public HeapRegionClosure { size_t _occupied; ! ! size_t _total_rs_mem_sz; ! size_t _max_rs_mem_sz; ! HeapRegion* _max_rs_mem_sz_region; ! ! size_t _total_code_root_mem_sz; ! size_t _max_code_root_mem_sz; ! HeapRegion* _max_code_root_mem_sz_region; public: HRRSStatsIter() : _occupied(0), ! _total_rs_mem_sz(0), ! _max_rs_mem_sz(0), ! _max_rs_mem_sz_region(NULL), ! _total_code_root_mem_sz(0), ! _max_code_root_mem_sz(0), ! _max_code_root_mem_sz_region(NULL) {} bool doHeapRegion(HeapRegion* r) { ! HeapRegionRemSet* hrrs = r->rem_set(); ! ! // HeapRegionRemSet::mem_size() includes the ! // size of the strong code roots ! size_t rs_mem_sz = hrrs->mem_size(); ! if (rs_mem_sz > _max_rs_mem_sz) { ! _max_rs_mem_sz = rs_mem_sz; ! _max_rs_mem_sz_region = r; ! } ! _total_rs_mem_sz += rs_mem_sz; ! ! size_t code_root_mem_sz = hrrs->strong_code_roots_mem_size(); ! if (code_root_mem_sz > _max_code_root_mem_sz) { ! _max_code_root_mem_sz = code_root_mem_sz; ! _max_code_root_mem_sz_region = r; } ! _total_code_root_mem_sz += code_root_mem_sz; ! ! size_t occ = hrrs->occupied(); _occupied += occ; return false; } ! size_t total_rs_mem_sz() { return _total_rs_mem_sz; } ! size_t max_rs_mem_sz() { return _max_rs_mem_sz; } ! HeapRegion* max_rs_mem_sz_region() { return _max_rs_mem_sz_region; } ! size_t total_code_root_mem_sz() { return _total_code_root_mem_sz; } ! size_t max_code_root_mem_sz() { return _max_code_root_mem_sz; } ! HeapRegion* max_code_root_mem_sz_region() { return _max_code_root_mem_sz_region; } size_t occupied() { return _occupied; } }; double calc_percentage(size_t numerator, size_t denominator) { if (denominator != 0) { return (double)numerator / denominator * 100.0;
*** 182,205 **** out->print_cr(" Concurrent sampling threads times (s)"); out->print_cr(" %5.2f", sampling_thread_vtime()); HRRSStatsIter blk; G1CollectedHeap::heap()->heap_region_iterate(&blk); out->print_cr(" Total heap region rem set sizes = "SIZE_FORMAT"K." " Max = "SIZE_FORMAT"K.", ! blk.total_mem_sz()/K, blk.max_mem_sz()/K); out->print_cr(" Static structures = "SIZE_FORMAT"K," " free_lists = "SIZE_FORMAT"K.", HeapRegionRemSet::static_mem_size() / K, HeapRegionRemSet::fl_mem_size() / K); out->print_cr(" "SIZE_FORMAT" occupied cards represented.", blk.occupied()); ! HeapRegion* max_mem_sz_region = blk.max_mem_sz_region(); ! HeapRegionRemSet* rem_set = max_mem_sz_region->rem_set(); out->print_cr(" Max size region = "HR_FORMAT", " "size = "SIZE_FORMAT "K, occupied = "SIZE_FORMAT"K.", ! HR_FORMAT_PARAMS(max_mem_sz_region), ! (rem_set->mem_size() + K - 1)/K, ! (rem_set->occupied() + K - 1)/K); ! out->print_cr(" Did %d coarsenings.", num_coarsenings()); } --- 205,239 ---- out->print_cr(" Concurrent sampling threads times (s)"); out->print_cr(" %5.2f", sampling_thread_vtime()); HRRSStatsIter blk; G1CollectedHeap::heap()->heap_region_iterate(&blk); + // RemSet stats out->print_cr(" Total heap region rem set sizes = "SIZE_FORMAT"K." " Max = "SIZE_FORMAT"K.", ! blk.total_rs_mem_sz()/K, blk.max_rs_mem_sz()/K); out->print_cr(" Static structures = "SIZE_FORMAT"K," " free_lists = "SIZE_FORMAT"K.", HeapRegionRemSet::static_mem_size() / K, HeapRegionRemSet::fl_mem_size() / K); out->print_cr(" "SIZE_FORMAT" occupied cards represented.", blk.occupied()); ! HeapRegion* max_rs_mem_sz_region = blk.max_rs_mem_sz_region(); ! HeapRegionRemSet* max_rs_rem_set = max_rs_mem_sz_region->rem_set(); out->print_cr(" Max size region = "HR_FORMAT", " "size = "SIZE_FORMAT "K, occupied = "SIZE_FORMAT"K.", ! HR_FORMAT_PARAMS(max_rs_mem_sz_region), ! (max_rs_rem_set->mem_size() + K - 1)/K, ! (max_rs_rem_set->occupied() + K - 1)/K); out->print_cr(" Did %d coarsenings.", num_coarsenings()); + // Strong code root stats + out->print_cr(" Total heap region code-root set sizes = "SIZE_FORMAT"K." + " Max = "SIZE_FORMAT"K.", + blk.total_code_root_mem_sz()/K, blk.max_code_root_mem_sz()/K); + HeapRegion* max_code_root_mem_sz_region = blk.max_code_root_mem_sz_region(); + HeapRegionRemSet* max_code_root_rem_set = max_code_root_mem_sz_region->rem_set(); + out->print_cr(" Max size region = "HR_FORMAT", " + "size = "SIZE_FORMAT "K, num_elems = "SIZE_FORMAT".", + HR_FORMAT_PARAMS(max_code_root_mem_sz_region), + (max_code_root_rem_set->strong_code_roots_mem_size() + K - 1)/K, + (max_code_root_rem_set->strong_code_roots_list_length())); }