RMI and GC.Interval

Kirk Pepperdine kirk at kodewerk.com
Wed Jan 28 12:10:46 UTC 2015


Gosh, I should have kept quiet. I was quite happy that G1 didn’t trigger System.gc() for RMI.

Regards,
Kirk

On Jan 28, 2015, at 11:36 AM, Mikael Gerdin <mikael.gerdin at oracle.com> wrote:

> 
> 
> On 2015-01-28 11:28, Mikael Gerdin wrote:
>> Hi Kirk,
>> 
>> On 2015-01-28 09:12, Kirk Pepperdine wrote:
>>> Hi,
>>> 
>>> I was looking at G1 code and found this.
>>> 
>>> jlong G1CollectedHeap::millis_since_last_gc() {
>>> // assert(false, "NYI");
>>>   return 0;
>>> }
>> 
>> I've noticed this as well when I was reading through the code at one
>> point but for some reason I didn't file a CR for it, this time I will :)
> 
> I filed https://bugs.openjdk.java.net/browse/JDK-8071770
> 
> Thanks for the bug report, Kirk!
> 
> /Mikael
> 
>> 
>>> 
>>> As long as this method returns 0, this code in sun.misc.GC always fails
>>> as maxObjectInspectionAge() is a native call that tunnels back to
>>> millis_since_last_gc().
>>> 
>>> public void run() {
>>> for (;;) {
>>> long l;
>>> synchronized (lock) {
>>> 
>>>                     l = latencyTarget;
>>> if (l == NO_TARGET) {
>>> /* No latency target, so exit */
>>>                         GC.daemon = null;
>>> return;
>>>                     }
>>> 
>>> long d = maxObjectInspectionAge();
>>> if (d >= l) {
>>> /* Do a full collection.  There is a remote possibility
>>>                          * that a full collection will occurr between
>>> the time
>>>                          * we sample the inspection age and the time
>>> the GC
>>>                          * actually starts, but this is sufficiently
>>> unlikely
>>>                          * that it doesn't seem worth the more
>>> expensive JVM
>>>                          * interface that would be required.
>>>                          */
>>>                         System.gc();
>>>                         d = 0;
>>>                     }
>>> 
>>> /* Wait for the latency period to expire,
>>>                      * or for notification that the period has changed
>>>                      */
>>> try {
>>>                         lock.wait(l - d);
>>>                     } catch (InterruptedException x) {
>>> continue;
>>>                     }
>>>                 }
>>>             }
>>>         }
>>> 
>>> My guess is; this is intentional?
>> 
>> The most likely reason is that not any of the current G1 developers had
>> any idea that this wasn't implemented and nobody has pointed this out
>> before.
>> 
>>> 
>>> Kind regards,
>>> Kirk Pepperdine
>>> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 496 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <https://mail.openjdk.org/pipermail/hotspot-gc-dev/attachments/20150128/7b55dd69/signature.asc>


More information about the hotspot-gc-dev mailing list