comparison src/share/vm/gc_implementation/g1/g1GCPhaseTimes.cpp @ 20296:a3953c777565

8027959: Early reclamation of large objects in G1 Summary: Try to reclaim humongous objects at every young collection after doing a conservative estimate of its liveness. Reviewed-by: brutisso, mgerdin
author tschatzl
date Wed, 23 Jul 2014 09:03:32 +0200
parents 2c6ef90f030a
children e8ba50da0de0
comparison
equal deleted inserted replaced
20295:3f2894c5052e 20296:a3953c777565
252 252
253 void G1GCPhaseTimes::print_stats(int level, const char* str, double value) { 253 void G1GCPhaseTimes::print_stats(int level, const char* str, double value) {
254 LineBuffer(level).append_and_print_cr("[%s: %.1lf ms]", str, value); 254 LineBuffer(level).append_and_print_cr("[%s: %.1lf ms]", str, value);
255 } 255 }
256 256
257 void G1GCPhaseTimes::print_stats(int level, const char* str, size_t value) {
258 LineBuffer(level).append_and_print_cr("[%s: "SIZE_FORMAT"]", str, value);
259 }
260
257 void G1GCPhaseTimes::print_stats(int level, const char* str, double value, uint workers) { 261 void G1GCPhaseTimes::print_stats(int level, const char* str, double value, uint workers) {
258 LineBuffer(level).append_and_print_cr("[%s: %.1lf ms, GC Workers: " UINT32_FORMAT "]", str, value, workers); 262 LineBuffer(level).append_and_print_cr("[%s: %.1lf ms, GC Workers: " UINT32_FORMAT "]", str, value, workers);
259 } 263 }
260 264
261 double G1GCPhaseTimes::accounted_time_ms() { 265 double G1GCPhaseTimes::accounted_time_ms() {
354 if (G1Log::finest()) { 358 if (G1Log::finest()) {
355 _last_redirty_logged_cards_time_ms.print(3, "Parallel Redirty"); 359 _last_redirty_logged_cards_time_ms.print(3, "Parallel Redirty");
356 _last_redirty_logged_cards_processed_cards.print(3, "Redirtied Cards"); 360 _last_redirty_logged_cards_processed_cards.print(3, "Redirtied Cards");
357 } 361 }
358 } 362 }
363 if (G1ReclaimDeadHumongousObjectsAtYoungGC) {
364 print_stats(2, "Humongous Reclaim", _cur_fast_reclaim_humongous_time_ms);
365 if (G1Log::finest()) {
366 print_stats(3, "Humongous Total", _cur_fast_reclaim_humongous_total);
367 print_stats(3, "Humongous Candidate", _cur_fast_reclaim_humongous_candidates);
368 print_stats(3, "Humongous Reclaimed", _cur_fast_reclaim_humongous_reclaimed);
369 }
370 }
359 print_stats(2, "Free CSet", 371 print_stats(2, "Free CSet",
360 (_recorded_young_free_cset_time_ms + 372 (_recorded_young_free_cset_time_ms +
361 _recorded_non_young_free_cset_time_ms)); 373 _recorded_non_young_free_cset_time_ms));
362 if (G1Log::finest()) { 374 if (G1Log::finest()) {
363 print_stats(3, "Young Free CSet", _recorded_young_free_cset_time_ms); 375 print_stats(3, "Young Free CSet", _recorded_young_free_cset_time_ms);