RFR: 8375580: Avoid using ArrayDeque in jdk.internal.loader.URLClassPath

Eirik Bjørsnøs eirbjo at openjdk.org
Mon Jan 19 17:45:03 UTC 2026


On Sun, 18 Jan 2026 10:32:57 GMT, Hannes Greule <hgreule at openjdk.org> wrote:

>>> This will always be used if we are using `JarLoader`, which seems to be used in the majority of cases.
>> 
>> Not exactly, `push` is only called when the JAR uses the 'Class-Path:' attribute. I don't have data to support this, but from personal experience I don't see this being used too often.
>> 
>>> I recommend initializing this dfs variable unconditionally.
>> 
>> GIven the above, do you still think it's worth initializing this eagerly? It would allow us to make the field final and avoid a null check.
>> 
>> EDIT: Decided to initialize eagerly and make the field final, see below.
>
> `ArrayList` initializes its backing array lazily when using that constructor, so I think there isn't much reason to do a "double lazy" initialization.
> 
> (It *might* make sense to initialize the list with a different size (e.g. `urls.length`), but I guess we'd need some real-world data on this. And I don't think that's worth the effort.)

Alright, seems I was too eager on this lazy initialization :)

I have made the field final.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/29288#discussion_r2702321343


More information about the core-libs-dev mailing list