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

SendaoYan syan at openjdk.org
Fri Feb 27 01:59:34 UTC 2026


On Thu, 26 Feb 2026 21:57:13 GMT, Robert Toyonaga <duke at 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.

test/jdk/jdk/jfr/event/oldobject/TestClassLoader.java line 42:

> 40: 
> 41:     static byte[] classByteCode = readTestClassBytes();
> 42:     private  int classIdCounter;

Seems an extra whitespace

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

PR Review Comment: https://git.openjdk.org/jdk/pull/29945#discussion_r2862115146


More information about the hotspot-jfr-dev mailing list