RFR: JDK-8301704: Shorten the number of GCs in UnloadingTest.java to verify a class loader not being unloaded
Mandy Chung
mchung at openjdk.org
Wed Feb 8 20:32:45 UTC 2023
On Thu, 2 Feb 2023 22:19:07 GMT, Roger Riggs <rriggs at openjdk.org> wrote:
>> `test/jdk/java/lang/invoke/defineHiddenClass/UnloadingTest.java` defines hidden classes and verify cases that a class loader is not unloaded using `ForceGC::wait`. ForceGC::wait` defaults the timeout to 1000ms * jtreg timeout factor, which is designed to work well to expect an object being reclaimed, i.e. the boolean supplier returns true. On the other hand, if the boolean supplier never returns true, the method returns after it timeouts which may be long depending on the timeout factor.
>>
>> This PR adds a variant of `ForceGC::wait` to take a timeout parameter and tests can specify the timeout to reduce the time it takes testing a strongly reachable object not being reclaimed.
>
> test/lib/jdk/test/lib/util/ForceGC.java line 73:
>
>> 71: * if did not complete after the specified waiting time.
>> 72: */
>> 73: public static boolean wait(BooleanSupplier booleanSupplier, long timeout) {
>
> Can the method name be changed to make it clear the timeout is not scaled by the TIMEOUT factor.
> (It would have been better if the original method name mentioned the timeout factor).
> How about, `waitNoMoreThan`.
what about `waitFor`?
I also considered renaming the original method to something else to indicate that the timeout is scaled with jtreg timeout factor. Now `wait(BooleanSupplier)` is equivalent to `wait` with timeout = 1000L * TIMEOUT_FACTOR) and the javadoc states the timeout, which seems okay to me.
-------------
PR: https://git.openjdk.org/jdk/pull/12392
More information about the core-libs-dev
mailing list