On Mon, 2 Mar 2026 14:08:24 GMT, Robert Toyonaga <duke@openjdk.org> wrote:
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.
Robert Toyonaga has updated the pull request incrementally with one additional commit since the last revision:
update copyright headers
Okay, I've reverted the `-XX:-UseTLAB` change, but kept the change that prevents overrunning the `classIdCounter`. ------------- PR Comment: https://git.openjdk.org/jdk/pull/29945#issuecomment-3999948910