RFR: 8331185: Enable compiler memory limits in debug builds

Thomas Stuefe stuefe at openjdk.org
Fri Apr 26 11:35:41 UTC 2024


See [1] for previous discussions.

We'd like to introduce a default memory limit for compilations in debug builds. That way, we can catch pathological compiler errors that have an unreasonably high per-compilation memory footprint early during testing.

The default limit affects all compilations, unless the method is subject to a memory limit set from command line. Meaning, `-XX:CompileCommand=MemLimit,...` overrules the default.

Examples:

This lowers the memlimit for j.l.String methods - all methods will have the default 1GB limit in a debug JVM. Only j.l.String will run with a 100M limit: `-XX:CompileCommand=MemLimit,java.lang.String::*,100m`

This disables the default memlimit globally: `-XX:CompileCommand=MemLimit,*.*,0`


---

The patch:

1) adds a debug-only default memory limit of **1GB** (as proposed by @vnkozlov). The limit action is "crash", meaning we will assert.
2) To test the mechanics, we now print out the memory limit for each compilation in the compilation cost record.
3) Adapted and extended tests

I also fixed up some copyrights that I overlooked last year when adding the compiler memory statistics this patch builds atop of.


Tested:

- manually on Mac m1 (debug and release)
- GHAs are running
- but Oracle will do more testing before this goes in

[1] https://mail.openjdk.org/pipermail/hotspot-compiler-dev/2024-April/074787.html

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

Commit messages:
 - adapt tests
 - fix printout for mem limit
 - also print limit when printing compilation mem histo
 - default limit

Changes: https://git.openjdk.org/jdk/pull/18969/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=18969&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8331185
  Stats: 152 lines in 5 files changed: 104 ins; 12 del; 36 mod
  Patch: https://git.openjdk.org/jdk/pull/18969.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/18969/head:pull/18969

PR: https://git.openjdk.org/jdk/pull/18969


More information about the hotspot-compiler-dev mailing list