RFR: 8301684: Fix test code to not get finalizer deprecation warnings
Coleen Phillimore
coleenp at openjdk.org
Fri Mar 10 12:52:14 UTC 2023
On Fri, 10 Mar 2023 08:23:45 GMT, Afshin Zafari <duke at openjdk.org> wrote:
> To replace the finalizer use in the code, the `Cleaner` approach is used as stated in [Oracle doc on deprecated finalize() method](https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#finalize()).
> Briefly:
> 1. An instance of `Cleaner` (`java.lang.ref`) is created.
> 2. Using the `Cleaner`, an object is registered with a `Runnable` callback that is notified when the object is no longer reachable (GC'ed).
> 3. Write code in the callback to do other cleanings.
> 4. Or, use the `Cleanable` object which is returned from registration above and call its `clean` method to explicitly clean the object.
>
>
> Cleaner c = new Cleaner();
> Cleanable cleanable = c.register(an_obj, a_runnable);
> ...
> //JVM notifies by calling the
> a_runnable.run() {...}
> ...
> // possible to explicit cleaning
> cleanable.clean(an_obj);
>
> ### Tests
> local: vmTestbase/nsk/monitoring/stress/classload
> mach5: tier 1-5
I don't know how cleaners work so here are some superficial comments.
test/hotspot/jtreg/vmTestbase/nsk/share/ClassUnloader.java line 102:
> 100: * Here it will be used for tracking the local instance of 'CustomClassLoader'.
> 101: */
> 102: private static class CustomClassLoaderCleaner implements Runnable{
nit: can you add a space before open { in these lines?
Also use // comments ?
test/hotspot/jtreg/vmTestbase/nsk/share/ClassUnloader.java line 318:
> 316:
> 317: // Since customClassLoader object is set to null, we should also null the cleaning
> 318: // objbects to let them be created when new customClassLoader is created.
typo: objbects
-------------
PR: https://git.openjdk.org/jdk/pull/12968
More information about the hotspot-runtime-dev
mailing list