Integrated: 8367005: ImageReader refactor caused performance regressions for startup and footprint
David Beaumont
duke at openjdk.org
Wed Sep 17 14:49:43 UTC 2025
On Wed, 10 Sep 2025 21:51:38 GMT, David Beaumont <duke at openjdk.org> wrote:
> Summary: Add two new methods to ImageReader to make SystemModuleReader more performant.
>
> Analysis of benchmarks shows that when the vast majority of resources (~11,000 in the Perfstartup-SwingSet-G1 benchmark) tested for in SystemModuleReader do NOT exist, performance is degraded compared to this code prior to the refactoring in JDK-8360037.
>
> The current refactoring of ImageReader has everything going through a single "findNode()" method for simplest possible encapsulation, but while this is functionally correct, it's not tuned for testing for the non-existence of resources.
>
> In particular:
> 1. SystemModuleReader only requests resources (i.e. things in the jimage file with paths *not* starting /modules/ or /packages/). This means findNode() does two look-ups for the resource, the first of which will always fail.
> 2. The containsResource() logic doesn't need to create and cache nodes in ImageReader, it can just check for the presence of an ImageLocation corresponding to a resource.
>
> Thus two new methods are added to resolve these cases:
> * findResourceNode(module, path)
> * containsResource(module, path)
>
> Their API takes module and path separately so as to not be confusable with findNode(nodename).
>
> However care must be taken to prevent these methods being fooled into returning non-resource entries (this was possible before the refactoring by using module names like "modules" or "packages") so new tests have been added.
This pull request has now been integrated.
Changeset: 9949ee31
Author: David Beaumont <david.beaumont at oracle.com>
Committer: Chen Liang <liach at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/9949ee3163a31f6f3c13c4fe34e8c0166210719e
Stats: 175 lines in 4 files changed: 153 ins; 13 del; 9 mod
8367005: ImageReader refactor caused performance regressions for startup and footprint
Reviewed-by: alanb, rriggs, jpai
-------------
PR: https://git.openjdk.org/jdk/pull/27203
More information about the core-libs-dev
mailing list