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