Integrated: 8362898: Remove finalize() methods from javax.imageio TIFF classes
Phil Race
prr at openjdk.org
Mon Aug 4 20:28:17 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.
This pull request has now been integrated.
Changeset: dc4d9b48
Author: Phil Race <prr at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/dc4d9b4849f6557f290338643910f0b05751d748
Stats: 44 lines in 3 files changed: 31 ins; 4 del; 9 mod
8362898: Remove finalize() methods from javax.imageio TIFF classes
Reviewed-by: azvegint, jdv
-------------
PR: https://git.openjdk.org/jdk/pull/26416
More information about the client-libs-dev
mailing list