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