This PR removes javax/imageio/stream/ImageInputStreamImpl.finalize() As a result, sub-classes which over-ride it to be empty no longer need to do so. Also it means that the 2 remaining classes which used it no longer can. FileCacheImageOutputStream will have its cache cleaned up by a disposer. The impact on applications is that they, or the ImageWriter may need to call flush() IF they relied on finalization. However that should be extremely unlikely given that finalization will happen far too late in most cases, and is really meant to clean up internal resources. The JDK's GIF and TIFF image writers don't flush themselves, so applications which use these together with one of these caching streams would have learned this already.
The principal outside risk is to 3rd party ImageIO stream subclasses which both allocate native resources and rely on finalization as a backstop clean up in case applications forget to call close. But it will be the applications that are affected if the resource is depleted. The risks of this will be covered in the CSR. There's also a lengthy write up in the JBS issue. ------------- Commit messages: - 8277585 - 8277585 Changes: https://git.openjdk.org/jdk/pull/26650/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26650&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8277585 Stats: 276 lines in 10 files changed: 63 ins; 202 del; 11 mod Patch: https://git.openjdk.org/jdk/pull/26650.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26650/head:pull/26650 PR: https://git.openjdk.org/jdk/pull/26650