RFR 9: 8138696 : java.lang.ref.Cleaner - an easy to use alternative to finalization
Rezaei, Mohammad A.
Mohammad.Rezaei at gs.com
Thu Oct 1 14:28:56 UTC 2015
The proposed API makes good sense for what I would consider coarse grained cleanup.
There is another significant use case for Weak/Soft references that is not covered here: weak/soft references used in cache like data structures, e.g. WeakHashMap.
Wouldn't there be significant code reuse if I could register a ReferenceQueue and get callbacks when appropriate?
(Just like other uses of this cleaner, any user of this api has to pay attention to concurrency, so WeakHashMap, as is, is not a great candidate for this).
>From: core-libs-dev [mailto:core-libs-dev-bounces at openjdk.java.net] On Behalf
>Of Roger Riggs
>Sent: Thursday, October 01, 2015 10:13 AM
>Subject: RFR 9: 8138696 : java.lang.ref.Cleaner - an easy to use alternative
>Please review a proposal for public Cleaner API:
>A Cleaner is proposed to provide an easy to use alternative to
>finalization. The service would provide easy registration and
>cancellation of cleanup functions for objects. Applications create a
>cleanup service for their own use and the service terminates when it is
>no longer in use.
>Finalization has a long history of issues both in usage and performance.
>PhantomReferences have been proposed as the alternative GC based
>mechanism for cleaning functions but it has been left as an exercise to
>the developer to construct the necessary mechanisms to handle
>ReferenceQueues, handle threading issues and robust termination.
>The Cleaner performs cleaning functions when objects are unreachable as
>found by garbage collection using the existing mechanisms of
>PhantomReference, WeakReference, SoftReferences, and ReferenceQueues. It
>manages a thread that dequeues references to unreachable objects and
>invokes the corresponding cleaning function. Registered cleaning
>functions can be cleared if no longer needed, can be invoked explicitly
>to perform the cleanup immediately, or be invoked when the object is not
>reachable (as detected by garbage collection) and handled by a cleanup
>The java.lang.ref package is proposed for the Cleaner because it is
>complementary to the reference classes and reference queues and to make
>it easy to find.
>It is not a goal to replace all uses of finalization or sun.misc.Cleaner
>in the JDK.
>Investigation will evaluate if and in what cases the Cleaner can replace
>A subsequent task will examine uses of finalization and propose specific
>on a case by base basis.
>Please review and comment:
More information about the core-libs-dev