RFR(M): 8248401: Refactor/unify RMI gc support functionality
Thomas Schatzl
thomas.schatzl at oracle.com
Fri Aug 7 11:22:07 UTC 2020
Hi Albert,
thanks for your review.
On 07.08.20 12:22, Albert Yang wrote:
> Hi,
>
> The patch looks good to me; some small comments/suggestions.
>
> The comment for `millis_since_last_whole_heap_examined` seems incorrect;
> it should be "the whole heap" not "any patr of the heap".
> ```
> // Returns the longest time (in ms) that has elapsed since the last
> // time that any part of the heap was examined by a garbage collection.
> ```
You are right. I meant it as "all parts of the heap".
>
> The name, `next_whole_heap_examined`, doesn't sound quite right. (It's
> not obvious to me what that function does from its name.) Maybe
> `record_whole_heap_examined_timestamp`?
Done.
>
> I think it's best to call `next_whole_heap_examined` at the end of
> `PSParallelCompact::post_compact()`, just like before this patch.
Fine with me.
>
> Maybe we can preserve this commment in the declaration of
> `_last_whole_heap_examined_time_ns` so that readers know we choose `ns`
> on purpose, even though the caller, `JVM_MaxObjectInspectionAge`, only
> need `ms`.
> ```
> // We need to use a monotonically non-decreasing time in ms
> // or we will see time-warp warnings and os::javaTimeMillis()
> // does not guarantee monotonicity. > ```
I added a comment, but left the specifics about os::javaTimeMillis() out
there. First, it would be better placed at the implementation, and
second we are using the nanosecond counter anyway. Talking about a
method that returns milliseconds seems confusing.
New webrevs:
http://cr.openjdk.java.net/~tschatzl/8248401/webrev.1_to_2 (diff)
http://cr.openjdk.java.net/~tschatzl/8248401/webrev.2 (full)
Testing: local with new test
Thanks,
Thomas
>
> On 2020-08-04 12:02, Thomas Schatzl wrote:
>> Hi Stefan,
>>
>> thanks for your review.
>>
>> On 03.08.20 13:30, Stefan Karlsson wrote:
>>> Hi Thomas,
>>>
>>> Not a complete review, but regarding the ZGC change, I don't think
>>> it's appropriate to add a callback to Universe/CollectedHeap to
>>> ZStatCycle. Most functions in ZStat only collects and print
>>> statistics, and does not trigger external events. I think moving it
>>> to the call would be cleaner:
>>>
>>> ~ZDriverGCScope() {
>>> ...
>>> // Update statistics
>>> ZStatCycle::at_end(_gc_cause, boost_factor);
>>>
>>> // Update data used by soft reference policy
>>> Universe::update_heap_info_at_gc();
>>>
>>> // Maybe add the call here?
>>> ...
>>> }
>>>
>>
>> Thank you for pointing out the appropriate place in ZGC. Done.
>>
>>> Seeing this, it's also apparent that some of the "last_gc" info has
>>> historically been recorded in Universe:
>>>
>>> void Universe::update_heap_info_at_gc() {
>>> _heap_capacity_at_last_gc = heap()->capacity();
>>> _heap_used_at_last_gc = heap()->used();
>>> }
>>>
>>> while _last_whole_heap_examined_time_ns is recorded in CollectedHeap.
>>> I think we should create a RFR to move the heap variables out of
>>> Universe.
>>
>> Done, JDK-8250961.
>>
>> In addition to above changes, I tried to move the new call closer to
>> Universe::update_heap_info_at_gc() in a few places and improve naming
>> of some local variables.
>>
>> New webrevs:
>> http://cr.openjdk.java.net/~tschatzl/8248401/webrev.0_to_1 (diff)
>> http://cr.openjdk.java.net/~tschatzl/8248401/webrev.1 (full)
>>
>> Reran the test 300 times with these changes.
>>
>> Thanks,
>> Thomas
>
More information about the hotspot-gc-dev
mailing list