On Thu, 26 May 2022 18:50:07 GMT, Xue-Lei Andrew Fan <xue...@openjdk.org> wrote:
> Hi, > > May I have this test update reviewed? > > The ForceGC could be enhanced by using smaller wait/sleep time, and shared > cleaner. > > Thanks, > Xuelei Even using a Cleaner is a more overhead than necessary. I would have skipped the overhead of a cleaner and Atomic classes with something more self contained as a static method: /** * The garbage collector is invoked to find unreferenced objects. * A new object is created and then freed. The method returns * when the object has been reclaimed or the GC did not complete in 10 seconds. * * @return true if GC was complete, false if did not complete after 10 Seconds */ public static boolean waitForGC() { ReferenceQueue<Object> queue = new ReferenceQueue<>(); Object obj = new Object(); PhantomReference<Object> ref = new PhantomReference<>(obj, queue); obj = null; Reference.reachabilityFence(obj); Reference.reachabilityFence(ref); System.gc(); for (int retries = 100; retries > 0; retries--) { try { var r = queue.remove(100L); if (r != null) { return true; } } catch (InterruptedException ie) { // ignore, the loop will try again } System.gc(); } return false; } YMMV ------------- PR: https://git.openjdk.java.net/jdk/pull/8907