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


Reply via email to