RFR: 8350938: ResourceParsingClassHierarchyResolver inflates all Utf8 CP entries [v2]

duke duke at openjdk.org
Wed Nov 26 01:26:49 UTC 2025


On Tue, 25 Nov 2025 23:03:11 GMT, Trevor Bond <duke at openjdk.org> wrote:

>> Enhance `ResourceParsingClassHierarchyResolver.getClassInfo` to use `ClassReaderImpl` to improve performance. Previously this method inflated and stored all UTF-8 entries in the constant pool and later accessed the array of strings to try finding the name of the superclass. `ClassReaderImpl` instead stores constant pool offsets and later lazily reads/inflates UTF8 entries as needed.
>> 
>> I’ve ran all tier 1 tests and tests within `test/jdk/jdk/classfile` on the latest version of this change, and they all pass.
>> 
>> I ran some informal performance testing to see if these changes led to any improvement. I created a .class file with several thousand unique strings in a String array to deliberately enlarge the number of UTF-8 entries in the constant pool. I then benchmarked the performance of running a process nearly identical to `ClassHierarchyInfoTest.testClassLoaderParsingResolver` on this custom class over 200 runs using JMH. The results are as follows.
>> 
>> | Version | Avg Time (ns/op) | Δ vs Before |
>> |--------|------------------:|-------------|
>> | **Before** | 1,483,671.539 ± 3,477.744 | — |
>> | **After** | 1,380,064.517 ± 3,482.434 | ≈ 7.0% faster |
>
> Trevor Bond has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Remove unnecessary imports

@trevorkbond 
Your change (at version a990cd30b4d076d41210b3872b8abf29cc3eca9f) is now ready to be sponsored by a Committer.

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

PR Comment: https://git.openjdk.org/jdk/pull/28458#issuecomment-3578349393


More information about the core-libs-dev mailing list