On Tue, 12 Aug 2025 19:32:33 GMT, Phil Race <p...@openjdk.org> wrote:

> Remove javax.imageio.spi.ServiceRegistry.finalize() since it is deprecated 
> for removal.
> The impact of this should be minimal. The IIORegistry will now be a singleton 
> - which it already was 
> in practice since Applets are no longer supported. Since it is a singleton, 
> it will persist for the life
> of the VM, so will never be garbage collected.
> A test that verifies one per-AppContext is now obsolete, and is deleted, and 
> there's no good reason to make it a negative test, since in due course 
> AppContext itself will be deleted and is un-used today except in tests.
> 
> Since JDK 9, ServiceRegistry has supported only Image I/O specified 
> providers, and since the IIORegistry does this,
> in practice there is very little reason for an application to create 
> instances or subclasses of it.
> And even if they do, typically like IIORegistry, they be used for the life 
> time of the application.
> And if they are collected, without calling ServiceRegistry.deregisterAll() 
> there may be no impact,
> since only providers that implement RegisterableService will be affected.
> 
> See the JBS issue for all the details.
> 
> The CSR is ready for review https://bugs.openjdk.org/browse/JDK-8365409

src/java.desktop/share/classes/javax/imageio/spi/IIORegistry.java line 109:

> 107:     private static final IIORegistry registry;
> 108:     static {
> 109:         registry = new IIORegistry();

Constructor of IIORegistry executes a large amount of code, might be better to 
load it lazily as before? instead of from the class initialization. could be a 
good opportunity to use StableValue?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/26752#discussion_r2277756129

Reply via email to