[lworld] RFR: 8364107: [lworld] Revise memory limit in compiler/startup/StartupOutput.java

Marc Chevalier mchevalier at openjdk.org
Mon Nov 24 07:38:06 UTC 2025


Let's do a similar job as in https://github.com/openjdk/valhalla/pull/1509 and see what evolved since [JDK-8350209: Preserve adapters in AOT cache](https://bugs.openjdk.org/browse/JDK-8350209) landed in Valhalla.

For each tick in the list, I give a range that behaves homogeneously, and compare it to a Mainline and/or Valhalla range of https://github.com/openjdk/valhalla/pull/1509

- [4, 24] ~ Mainline [4, 28]
  ```
  # There is insufficient memory for the Java Runtime Environment to continue.
  # Native memory allocation (malloc) failed to allocate 3000 bytes. Error detail: `CodeCache: no room for StubRoutines` (continuation stubs)
  ```
- [25, 28] ~ Mainline [29, 32] | Valhalla [29, 32]
  `fatal error: Initial size of CodeCache is too small`
- [29, 1164] ~ Mainline [33, 1112] | Valhalla [33, 1164]
  ```
  # There is insufficient memory for the Java Runtime Environment to continue.
  # Native memory allocation (malloc) failed to allocate 1108928 bytes. Error detail: CodeCache: no room for Interpreter
  ```
- [1165, 1172] ~ Mainline [1117, 1128] | Valhalla [1165, 1172]
  `fatal error: Initial size of CodeCache is too small`
- [1173, 1176] ~ Valhalla [1225, 1228] (out of order, weird, uh!)
  SIGSEGV in `CodeSection::emit_int8(unsigned char)`
- [1177, 1224] ~ Mainline [1129, 1144] | Valhalla [1173, 1220]
  `assert(_buffer != nullptr) failed: should be initialized`
- [1225, 1228] ~ Mainline [1145, 1148] | Valhalla [1221, 1224]
  `assert(_no_arg_handler != nullptr && _obj_arg_handler != nullptr && _int_arg_handler != nullptr && _obj_int_arg_handler != nullptr && _obj_obj_arg_handler != nullptr) failed: Initial adapter handlers must be properly created`
- [1229, ~1250] ~ Mainline [1149, ~1700]
  Often works, sometimes
  ```
  java.lang.OutOfMemoryError: Out of space in CodeCache for adapters
  ```
- [~1250, 1276]
  Mostly works
- [1277, 1432]
  ```
  java.lang.OutOfMemoryError: Out of space in CodeCache for adapters
  ```
- [1433, 1438] ~ Valhalla [1301, 1308]
  ```
  java.lang.InternalError: java.lang.NoSuchMethodException: no such method: java.lang.invoke.MethodHandle.linkToStatic(Object,Object,MemberName)Object/invokeStatic
  Caused by: java.lang.NoSuchMethodException: no such method: java.lang.invoke.MethodHandle.linkToStatic(Object,Object,MemberName)Object/invokeStatic
  ```
- [1439, ~1600]
  works but
  ```
  CodeCache is full. Compiler has been disabled.
  ```
- Above 1600, compiler shutdown starts to be rare, but again around 2800k Like it was for Valhalla before above 1994k, and we saw it around 3700k.

  It used to be:
  > [1994, ...] mostly works, but sometimes the same error as above, witnessed until 3780k (and especially between 3640 and 3780). Interestingly, at 3700k, we also see some fine runs, with, or without compiler shutdown. Starting 3800k, I never saw a failure, and starting 3900k, no compiler shutdown.

Overall, the behavior for small amount of memory is similar as in previous Valhalla and mainline. The behavior for larger amounts got much better, more similar to mainline where it mostly works from 1149k, and up, except in some pathological islands.

So, it looks good to reduce the `2000` in `compiler/startup/StartupOutput.java` (was increased from `800`). So, I just tried... If locally, I could indeed make it run with quite smaller amount of memory, some more testing shows that `1300` is a better bound: it crashes significantly starting under `1200` but seems to pass all tests with `1300`. That is still an increase from `800`, but less radical than `2000`.

Thanks,
Marc

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

Commit messages:
 - 1300
 - 800

Changes: https://git.openjdk.org/valhalla/pull/1749/files
  Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=1749&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8364107
  Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/valhalla/pull/1749.diff
  Fetch: git fetch https://git.openjdk.org/valhalla.git pull/1749/head:pull/1749

PR: https://git.openjdk.org/valhalla/pull/1749


More information about the valhalla-dev mailing list