RFR: 8376106: TestObjectDescription.java intermittent fails Unable to replace class name

Robert Toyonaga duke at openjdk.org
Thu Feb 26 22:04:13 UTC 2026


This change prevents the counter from overflowing. 

### Problem:
The counter overflows at 2002 iterations because on each iteration the retry loop calls `testClassLoader.loadClasses(OldObjects.MIN_SIZE / 20)`. 
`OldObjects.MIN_SIZE` = 99901 , so 99901 / 20 = 4995 classes are loaded each iteration.

The constructed `className` must be exactly the same length as "TestClass0000000". Which means the max number of classes loaded can be 9,999,999. After 2002 iterations we hit the limit (2002 * 4995 = 9,999,990).

### Solution

Making `classIdCounter`  non-`static` forces the counter to reset with each iteration of `TestObjectDescription.asseertObjectDescription`. The maximum value of the counter is now 4995, so it cannot possibly overflow no matter how long it takes to collect the leak samples. 

Testing:
- Re-running the test 60 times never results in overflow.

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

Commit messages:
 - spelling
 - improve test reliability

Changes: https://git.openjdk.org/jdk/pull/29945/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=29945&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8376106
  Stats: 7 lines in 2 files changed: 0 ins; 0 del; 7 mod
  Patch: https://git.openjdk.org/jdk/pull/29945.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/29945/head:pull/29945

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


More information about the hotspot-jfr-dev mailing list