On Thu, 2 Mar 2023 12:20:24 GMT, Alexey Ivanov <aiva...@openjdk.org> wrote:

> Do you agree that using only `System.gc` is more concise than generating OOME?
> If `System.gc` is enough for testing `Reference` classes, why does the client 
> libs team need to generate OOME? Our tests use the `Reference` classes to 
> check if an object is garbage-collected.

I prefer to use OOM just based on the text of the specification I referred 
above. As per the spec, both should trigger some cleanup, but System.gc could 
be ignored. If we would like to change that approach then let's add a retry to 
this test first.  Maybe the test will continue to fail if we will add just a 
retry. Isn't it suspicious that it started to fail now? and then replace the 
usage/implementation of generateOOM method by system.gc() everywhere.

> I already answered this question several times. I followed the piece of 
> advice in the [JBS 
> comment](https://bugs.openjdk.org/browse/JDK-8300727?focusedCommentId=14560139&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14560139):
>  _“This is not the way to provoke a full GC in a test reliably. Just use 
> System.gc(). See e.g. 
> [`test/jdk/java/lang/ref/PhantomReferentClearing.java`](https://github.com/openjdk/jdk/blob/master/test/jdk/java/lang/ref/PhantomReferentClearing.java).”_
> 
> That's what I did. Using `System.gc()` proved to be successful and, in my 
> opinion, it looks cleaner than generating OOME.

But why we did not ask why "This is not the way to provoke a full GC in a test 
reliably"? It does not work as specified?

-------------

PR: https://git.openjdk.org/jdk/pull/12594

Reply via email to