RFR: 8362898: Remove finalize() methods from javax.imagio TIFF classes.
Alexander Zvegintsev
azvegint at openjdk.org
Fri Aug 1 13:41:54 UTC 2025
On Mon, 21 Jul 2025 16:51:51 GMT, Phil Race <prr at openjdk.org> wrote:
> Remove finalize from TIFF ImageIO implementatation classes.
>
> Following copied from the bug description
> The TIFF image (de)compressors can make use of a JPEG reader / writer
> Like all ImageIO readers and writers, once done, the owner should call their dispose() method.
> This is currently done with finalize() to ensure it isn't missed.
>
> This can be migrated to a Disposer.
>
> However, the most common case is that it is the ImageIO built-in JPEGImageReader and JPEGImageWriter
> that is located and that already implements a Disposer. So there is no need to add a Disposer for that.
> We only need to add it if we find some other reader/writer.
>
> With enough work, it might be possible for the TIFF compressor/decompressor classes to work out when
> they are really done and avoid a Disposer at all. But it could also be that they instead need to discard
> them when a specific task is done and then obtain a new one.
> That would be much more overhead than just adding a Disposer for the rare case and regardless
> of what is done in the TIFF code, the built in JPEG classes will install their own Disposer so I don't
> think I want to pursue that route.
>
> I also noticed that TIFFBaseJPEGCompressor.java can replace the current writer if it doesn't satisfy a need.
> In that case it just nulls it out and doesn't call dispose() and of course finalize() will then refer to the replacement.
> So I added direct calls to dispose() in such a case. That was definitely necessary with the finalize() code
> but the Disposer would have taken care of it anyway, so it isn't strictly needed with the new code but
> it is still good to do it early if you can.
Marked as reviewed by azvegint (Reviewer).
-------------
PR Review: https://git.openjdk.org/jdk/pull/26416#pullrequestreview-3079289110
More information about the client-libs-dev
mailing list