RFR: 8277585: Remove the terminally deprecated finalize() method from javax.imageio.stream APIs [v3]

Alexander Zvegintsev azvegint at openjdk.org
Mon Aug 11 16:17:14 UTC 2025


On Wed, 6 Aug 2025 22:34:30 GMT, Phil Race <prr at openjdk.org> wrote:

>> 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.
>
> Phil Race has updated the pull request incrementally with one additional commit since the last revision:
> 
>   8277585

Marked as reviewed by azvegint (Reviewer).

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

PR Review: https://git.openjdk.org/jdk/pull/26650#pullrequestreview-3106645008


More information about the client-libs-dev mailing list