On Mon, 21 Jul 2025 16:51:51 GMT, Phil Race <p...@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 <p...@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

Reply via email to