RFR: 8365292: Remove javax.imageio.spi.ServiceRegistry.finalize() [v2]

Phil Race prr at openjdk.org
Wed Aug 20 20:36:21 UTC 2025


On Fri, 15 Aug 2025 20:06:21 GMT, Sergey Bylokhov <serb at openjdk.org> wrote:

>> I thought about that whilst making the change, but
>> (1) The javax.imagio.ImageIO class has this code
>> 
>>     private static final IIORegistry theRegistry =  IIORegistry.getDefaultInstance();
>> 
>> So it is going to get initialized really early on in virtually all uses of ImageIO, so doing as I did seems fine.
>> 
>> (2) The code in getDefaultInstance() is now going to run 1,000 times faster than it did before so stable value to get it running 2,000 times faster  probably is not necessary. And in any case, the version cached on ImageIO is what is going to be used. Hmm, it probably should not have been doing that as it defeated the AppContext, but it doesn't matter now.
>
> I am not worried much about performance, but I am concerned about the possibility of a deadlock in static initializers, since the services loaded by the IIORegistry can trigger any code.
> 
> btw why not "private static final IIORegistry registry = new IIORegistry();"?

Yes, I might as well now do that initialization.

I don't see how there's any deadlock risk here, and certainly no more than before.

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

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


More information about the client-libs-dev mailing list