src/share/vm/gc/g1/g1HeapTransition.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/gc/g1

src/share/vm/gc/g1/g1HeapTransition.cpp

Print this page




  42 
  43 struct DetailedUsage : public StackObj {
  44   size_t _eden_used;
  45   size_t _survivor_used;
  46   size_t _old_used;
  47   size_t _humongous_used;
  48 
  49   size_t _eden_region_count;
  50   size_t _survivor_region_count;
  51   size_t _old_region_count;
  52   size_t _humongous_region_count;
  53 
  54   DetailedUsage() :
  55     _eden_used(0), _survivor_used(0), _old_used(0), _humongous_used(0),
  56     _eden_region_count(0), _survivor_region_count(0), _old_region_count(0), _humongous_region_count(0) {}
  57 };
  58 
  59 class DetailedUsageClosure: public HeapRegionClosure {
  60 public:
  61   DetailedUsage _usage;
  62   bool doHeapRegion(HeapRegion* r) {
  63     if (r->is_old()) {
  64       _usage._old_used += r->used();
  65       _usage._old_region_count++;
  66     } else if (r->is_survivor()) {
  67       _usage._survivor_used += r->used();
  68       _usage._survivor_region_count++;
  69     } else if (r->is_eden()) {
  70       _usage._eden_used += r->used();
  71       _usage._eden_region_count++;
  72     } else if (r->is_humongous()) {
  73       _usage._humongous_used += r->used();
  74       _usage._humongous_region_count++;
  75     } else {
  76       assert(r->used() == 0, "Expected used to be 0 but it was " SIZE_FORMAT, r->used());
  77     }
  78     return false;
  79   }
  80 };
  81 
  82 void G1HeapTransition::print() {
  83   Data after(_g1_heap);
  84 
  85   size_t eden_capacity_bytes_after_gc = _g1_heap->g1_policy()->young_list_target_length() - after._survivor_length;
  86   size_t survivor_capacity_bytes_after_gc = _g1_heap->g1_policy()->max_survivor_regions();
  87 
  88   DetailedUsage usage;
  89   if (log_is_enabled(Trace, gc, heap)) {
  90     DetailedUsageClosure blk;
  91     _g1_heap->heap_region_iterate(&blk);
  92     usage = blk._usage;
  93     assert(usage._eden_region_count == 0, "Expected no eden regions, but got " SIZE_FORMAT, usage._eden_region_count);
  94     assert(usage._survivor_region_count == after._survivor_length, "Expected survivors to be " SIZE_FORMAT " but was " SIZE_FORMAT,
  95         after._survivor_length, usage._survivor_region_count);
  96     assert(usage._old_region_count == after._old_length, "Expected old to be " SIZE_FORMAT " but was " SIZE_FORMAT,
  97         after._old_length, usage._old_region_count);
  98     assert(usage._humongous_region_count == after._humongous_length, "Expected humongous to be " SIZE_FORMAT " but was " SIZE_FORMAT,




  42 
  43 struct DetailedUsage : public StackObj {
  44   size_t _eden_used;
  45   size_t _survivor_used;
  46   size_t _old_used;
  47   size_t _humongous_used;
  48 
  49   size_t _eden_region_count;
  50   size_t _survivor_region_count;
  51   size_t _old_region_count;
  52   size_t _humongous_region_count;
  53 
  54   DetailedUsage() :
  55     _eden_used(0), _survivor_used(0), _old_used(0), _humongous_used(0),
  56     _eden_region_count(0), _survivor_region_count(0), _old_region_count(0), _humongous_region_count(0) {}
  57 };
  58 
  59 class DetailedUsageClosure: public HeapRegionClosure {
  60 public:
  61   DetailedUsage _usage;
  62   void doHeapRegion(HeapRegion* r) {
  63     if (r->is_old()) {
  64       _usage._old_used += r->used();
  65       _usage._old_region_count++;
  66     } else if (r->is_survivor()) {
  67       _usage._survivor_used += r->used();
  68       _usage._survivor_region_count++;
  69     } else if (r->is_eden()) {
  70       _usage._eden_used += r->used();
  71       _usage._eden_region_count++;
  72     } else if (r->is_humongous()) {
  73       _usage._humongous_used += r->used();
  74       _usage._humongous_region_count++;
  75     } else {
  76       assert(r->used() == 0, "Expected used to be 0 but it was " SIZE_FORMAT, r->used());
  77     }

  78   }
  79 };
  80 
  81 void G1HeapTransition::print() {
  82   Data after(_g1_heap);
  83 
  84   size_t eden_capacity_bytes_after_gc = _g1_heap->g1_policy()->young_list_target_length() - after._survivor_length;
  85   size_t survivor_capacity_bytes_after_gc = _g1_heap->g1_policy()->max_survivor_regions();
  86 
  87   DetailedUsage usage;
  88   if (log_is_enabled(Trace, gc, heap)) {
  89     DetailedUsageClosure blk;
  90     _g1_heap->heap_region_iterate(&blk);
  91     usage = blk._usage;
  92     assert(usage._eden_region_count == 0, "Expected no eden regions, but got " SIZE_FORMAT, usage._eden_region_count);
  93     assert(usage._survivor_region_count == after._survivor_length, "Expected survivors to be " SIZE_FORMAT " but was " SIZE_FORMAT,
  94         after._survivor_length, usage._survivor_region_count);
  95     assert(usage._old_region_count == after._old_length, "Expected old to be " SIZE_FORMAT " but was " SIZE_FORMAT,
  96         after._old_length, usage._old_region_count);
  97     assert(usage._humongous_region_count == after._humongous_length, "Expected humongous to be " SIZE_FORMAT " but was " SIZE_FORMAT,


src/share/vm/gc/g1/g1HeapTransition.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File