[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