Hi Stuart, Thanks, I'll remove the unnecessary @SuppressWarnings in the next update. Roger On 3/13/17 6:57 PM, Stuart Marks wrote:
As Dr Deprecator, I approve of this change. :-)
One small comment. Deprecation warnings aren't issued at the use site of a deprecated API if the use site itself is deprecated. Thus, the @SuppressWarnings annotation isn't necessary in the following diff hunk:
--- old/src/java.base/share/classes/java/io/FileInputStream.java 2017-03-10 16:10:45.735018307 -0500 +++ new/src/java.base/share/classes/java/io/FileInputStream.java 2017-03-10 16:10:45.411187490 -0500 @@ -413,9 +413,13 @@ * Ensures that the <code>close</code> method of this file input stream is * called when there are no more references to it. * + * @deprecated Finalization is deprecated and should not be used. + * See {@link Object#finalize} for the explanation and recommended replacement. * @exception IOException if an I/O error occurs. * @see java.io.FileInputStream#close() */ + @Deprecated(since="9") + @SuppressWarnings("deprecation") protected void finalize() throws IOException { if ((fd != null) && (fd != FileDescriptor.in)) { /* if fd is shared, the references in FileDescriptor
There are several other similar occurrences.
Thanks,
s'marks
On 3/10/17 1:40 PM, Roger Riggs wrote:
Finalizers are inherently problematic and their use can lead to performance issues, deadlocks, hangs, and other problematic behavior.
The problems have been accumulating for many years and the first step to deprecate Object.finalize and the overrides in the JDK to communicate the issues, recommend alternatives, and motivate changes where finalization is currently used.
The behavior of finalization nor any uses of finalize are not modified by this change. Most of the changes are to suppress compilation warnings within the JDK.
Please review and comment.
Webrev: http://cr.openjdk.java.net/~rriggs/webrev-finalize-deprecate-8165641/
Issue: https://bugs.openjdk.java.net/browse/JDK-8165641
Thanks, Roger