On Tue, 27 Oct 2020 19:24:35 GMT, Florian Kirmaier <fkirma...@openjdk.org> 
wrote:

>> modules/javafx.base/src/test/java/test/util/memory/JMemoryBuddy.java line 
>> 150:
>> 
>>> 148:     public static boolean checkNotCollectable(WeakReference 
>>> weakReference) {
>>> 149:         createGarbage();
>>> 150:         System.gc();
>> 
>> I recommend calling `System.runFinalization();` here.
>> 
>> Also, do you think there is value in checking in a loop? Or is that 
>> overkill? One drawback of checking in a loop for the negative case is that 
>> you end up going through the loop all the way to the end in the expected 
>> case where a reference is not collectable, so it might be best to leave it 
>> as a single check as you have done.
>
> I've added runFinalization followed with another System.gc (otherwise it 
> wouldn't make any difference)
> I'm quite sure it's avoiding an error in the library, but I don't have a 
> unit-test for it yet.
> 
> It's a tradeoff between speed and reliability. The library tries to avoid 
> false-negative test results at all costs.
> false-positive results are tolerated for speed if they are "sufficiently 
> reliable".
> The Library has tests for assertNotCollectable, which are executed with every 
> commit for different JVM's, and I don't remember any false-positive results 
> (which would be visible as a negative test result, because the unit-test 
> checks for failing tests). For that reason, we can assume they are 
> "sufficiently reliable" despite the theoretical problem.

That sounds fine then.

As soon as you've pushed the follow-on fix (to add the `runFinalization` and a 
second `gc`) I'll finish my review.

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

PR: https://git.openjdk.java.net/jfx/pull/204

Reply via email to