Hi Alan,
On 1/6/2016 10:32 AM, Alan Bateman wrote:
On 05/01/2016 18:24, Roger Riggs wrote:
The follow on work to adding the Cleaner is to replace uses of
finalization with uses of the Cleaner.
For the 'easy' cases in the java.base module, it is useful to
introduce a private Cleaner for the
java.base module. It is proposed to be held weakly, to allow it to
terminate on a lightly loaded
system.
Webrev for Review:
http://cr.openjdk.java.net/~rriggs/webrev-cleaning-factory-8146028/
This looks okay but can't commonCleaner be final?
yes, fixed.
I prototype a version that kept a WeakReference to the Cleaner so it
could terminate
if not used. But it is more complex to make sure the Cleaner would be
referenced *only* as long
as there were pending Cleanables and depending on its use it might
thrash starting
a cleaner (thread) and then terminating, necessitating re-creating on
the next use.
The 2nd step is using the Cleaner.
- Empty finalize methods should (I think) be removed; but since they
are part of the public spec
the process needs two full releases; so the proposal is to
deprecate them first.
(The JEP 277 necessary changes will be updated when JEP 277
semantics are finalized)
I assume some of these could just be removed - for example
SocketInputStream/SocketOutputStream are package private and aren't
part of the API. But maybe you mean that you don't want to touch some
java.* classes?
Will remove them; its clearer.
I'll split the finalizers being removed into a separate webrev;
since they don't fit the original description as replacements.
Thanks, Roger
-Alan.