RFR 8220238 : Enhancing j.l.Runtime/System::gc specification with an explicit 'no guarantee' statement

Roger Riggs Roger.Riggs at oracle.com
Thu May 30 14:42:03 UTC 2019


Hi,

Though I see your point about gc() eventually returns, the spec 
typically does not
guarantee than any method eventually returns.  That's more a quality of 
service attribute.
The sentence refers to the effort to reclaim space, not the method call.

Would it clarify the case to add a qualification to the end of the sentence:
" before the method returns or ever."

As a whole:

      * Runs the garbage collector in the Java Virtual Machine.
      * <p>
      * Calling this method suggests that the Java Virtual Machine
      * expend effort toward recycling unused objects in order to
      * make the memory they currently occupy available for reuse
      * by the Java Virtual Machine.
      * When control returns from the method call, the Java Virtual Machine
      * has made a best effort to reclaim space from all unused objects.
      * There is no guarantee that this effort will recycle any particular
      * number of unused objects, reclaim any particular amount of space,
      * or complete at any particular time, if at all <b>before the 
method returns or ever</b>.

Thanks, Roger

On 05/30/2019 06:27 AM, Roman Kennke wrote:
>
>>> Any other comments on:
>>> "* Runs the garbage collector in the Java Virtual Machine.
>>> * <p>
>>> * Calling this method suggests that the Java Virtual Machine
>>> * expend effort toward recycling unused objects in order to
>>> * make the memory they currently occupy available for reuse
>>> * by the Java Virtual Machine.
>> The following two statements...
>>
>> 1st:
>>> * When control returns from the method call, the Java Virtual Machine
>>> * has made a best effort to reclaim space from all discarded objects.
>> 2nd:
>>> * There is no guarantee that this effort will recycle any particular
>>> * number of unused objects, reclaim any particular amount of space,
>>> * *or complete* at any particular time, if *at all*.
>>> "
>> ...makes one think that it is OK (by the spec) for System.gc() to never
>> complete.
>>
>> Could it rather be specified that System.gc() eventually completes?
>>
> +1 I was thinking the same.
>
> I think the intention is that GC may never actually complete, but
> System.gc() must be guaranteed to eventually return.
>
> Roman
>



More information about the core-libs-dev mailing list