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