RFR: 8301684: Fix test code to not get finalizer deprecation warnings

David Holmes dholmes at openjdk.org
Mon Mar 13 03:07:23 UTC 2023


On Fri, 10 Mar 2023 12:45:59 GMT, Coleen Phillimore <coleenp 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
>
> 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 ?

Just to be clear there should be a space before all opening braces in all the changes.

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

PR: https://git.openjdk.org/jdk/pull/12968


More information about the hotspot-runtime-dev mailing list