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

Reply via email to