Hi Sergey,

How about putting "System.gc()" in a while-loop and running with -XX:-DisableExplicitGC? Is it still possible that "System.gc()" may be completely ignored by the JVM?

As far as I know, GC will finally be triggered if "System.gc()" is called repeatedly with the JVM flag -XX:-DisableExplicitGC.
And I prefer "System.gc()" because it seems more readable and more elegant.
However, if it really doesn't work, I will not use it any more.

Could you please help me to explain it?
Thank you.

Best regards,
Jie


On 2019年01月05日 06:46, Sergey Bylokhov wrote:
On 03/01/2019 23:50, Alan Bateman wrote:
I think it's really hard to say that all weak references would be reclaimed by just calling "System.gc()" 10 times.
I don't like the new patch or catching OOME and do not wish to be a Reviewer on that version. The approach that we use in dozens of other tests is to call System.gc(), sleep, test if the reference has been cleared, and retry if needed.

I guess all such tests are broken since System.gc() may be complete ignored. The only reliable way to trigger gc is to use WhiteBox api from the vm tests, or trigger the real OOM like in the fix above(but note that the xmx should be specified in this case to limit the max memory of the test, to smth like 10m). Some of the beans tests use this pattern already: Test4646747.java, Test5102804.java, Test7172865.java, Test7195106.java, Test8027905.java, Test7064279.java



Reply via email to