RFR: 8331185: Enable compiler memory limits in debug builds [v9]

Thomas Stuefe stuefe at openjdk.org
Fri May 3 05:33:17 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

Thomas Stuefe has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 16 commits:

 - merge master and fix conflicts
 - Remove unused variable
 - Remove accidental change to TestDeadPhiMergeMemLoop.java
 - fix copyrights
 - fix copyrights
 - another fix
 - fix accidental slip in of another test name
 - fix jdk note number in test comment
 - Disable memory limit for compiler/loopopts/TestDeepGraphVerifyIterativeGVN.java until JDK-8331295 is fixed
 - Merge branch 'master' into compiler-default-limit
 - ... and 6 more: https://git.openjdk.org/jdk/compare/6bef0474...f6396010

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

Changes: https://git.openjdk.org/jdk/pull/18969/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=18969&range=08
  Stats: 165 lines in 7 files changed: 114 ins; 12 del; 39 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