RFR (M): 8040162: Avoid reallocating PLABs between GC phases in G1

Mikael Gerdin mikael.gerdin at oracle.com
Wed Aug 12 13:57:17 UTC 2015


Hi Thomas,

On 2015-08-12 12:38, Thomas Schatzl wrote:
> Hi,
>
> On Tue, 2015-08-11 at 16:56 +0200, Thomas Schatzl wrote:
>> Hi David,
>>
>> On Tue, 2015-08-11 at 15:17 +0200, David Lindholm wrote:
>>> Hi Thomas,
>>>
>>> Great work. Looks good, reviewed.
>>
>>    thanks for the review.
>
>    while testing the change a little more an issue with -XX:
> +ParallelRefProcEnabled has been found.
>
> Here is a new webrev:
> http://cr.openjdk.java.net/~tschatzl/8040162/webrev.0_to_1/ (diff)
> http://cr.openjdk.java.net/~tschatzl/8040162/webrev.1/ (full)

in g1CollectedHeap.cpp at
4571       }
4572
4573       _root_processor->evacuate_roots(strong_root_cl,
4574                                       weak_root_cl,
4575                                       strong_cld_cl,
4576                                       weak_cld_cl,
4577                                       trace_metadata,
4578                                       worker_id);
4579
4580       G1ParPushHeapRSClosure push_heap_rs_cl(_g1h, pss);
4581       double start_strong_roots_sec = os::elapsedTime();
4582       _root_processor->scan_remembered_sets(&push_heap_rs_cl,
4583                                             weak_root_cl,
4584                                             worker_id);
4585       double strong_roots_sec = os::elapsedTime() - 
start_strong_roots_sec;
4586

Shouldn't start_strong_roots_sec be taken before the call to 
evacuate_roots? Otherwise it just measures the time it takes to scan the 
remembered sets.

5400
5401 // Weak Reference processing during an evacuation pause (part 1).
5402 void 
G1CollectedHeap::process_discovered_references(G1ParScanThreadState** 
pss_) {
5403   double ref_proc_start = os::elapsedTime();
5404

If you wan the local to be called pss, can you name the ** 
per_thread_states as it's named in the caller?

in g1OopClosures.hpp
Would you consider moving set_ref_processor to G1ParScanClosure since 
it's only used for that particular concrete type?
As I understand it it's only needed for the _scanner G1ParScanClosure 
instance in the G1PSS that you need to be able to set the ref processor.

Otherwise the change looks good to me.

/Mikael

>
> Thanks,
>    Thomas
>
>



More information about the hotspot-gc-dev mailing list