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,
|