comparison src/share/vm/gc_implementation/g1/heapRegion.cpp @ 4023:c6a6e936dc68

7096030: G1: PrintGCDetails enhancements 7102445: G1: Unnecessary Resource allocations during RSet scanning Summary: Add a new per-worker thread line in the PrintGCDetails output. GC Worker Other is the difference between the elapsed time for the parallel phase of the evacuation pause and the sum of the times of the sub-phases (external root scanning, mark stack scanning, RSet updating, RSet scanning, object copying, and termination) for that worker. During RSet scanning, stack allocate DirtyCardToOopClosure objects; allocating these in a resource area was causing abnormally high GC Worker Other times while the worker thread freed ResourceArea chunks. Reviewed-by: tonyp, jwilhelm, brutisso
author johnc
date Sun, 23 Oct 2011 23:06:06 -0700
parents 65a8ff39a6da
children 53074c2c4600
comparison
equal deleted inserted replaced
4022:db89aa49298f 4023:c6a6e936dc68
338 // treat all objects as being inside the unmarked area. 338 // treat all objects as being inside the unmarked area.
339 zero_marked_bytes(); 339 zero_marked_bytes();
340 init_top_at_mark_start(); 340 init_top_at_mark_start();
341 } 341 }
342 342
343 DirtyCardToOopClosure*
344 HeapRegion::new_dcto_closure(OopClosure* cl,
345 CardTableModRefBS::PrecisionStyle precision,
346 HeapRegionDCTOC::FilterKind fk) {
347 return new HeapRegionDCTOC(G1CollectedHeap::heap(),
348 this, cl, precision, fk);
349 }
350
351 void HeapRegion::hr_clear(bool par, bool clear_space) { 343 void HeapRegion::hr_clear(bool par, bool clear_space) {
352 assert(_humongous_type == NotHumongous, 344 assert(_humongous_type == NotHumongous,
353 "we should have already filtered out humongous regions"); 345 "we should have already filtered out humongous regions");
354 assert(_humongous_start_region == NULL, 346 assert(_humongous_start_region == NULL,
355 "we should have already filtered out humongous regions"); 347 "we should have already filtered out humongous regions");