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

SendaoYan syan at openjdk.org
Sat Feb 28 02:44:19 UTC 2026


On Fri, 27 Feb 2026 16:27:40 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.
>
> Robert Toyonaga has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Add -XX:-UseTLAB to make sampling more reliable. Whitespace.

After apply the new proposed patch, this test run all passed with 1k times.

Should we update the copyright year for touched files.

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

Marked as reviewed by syan (Committer).

PR Review: https://git.openjdk.org/jdk/pull/29945#pullrequestreview-3869963458
PR Comment: https://git.openjdk.org/jdk/pull/29945#issuecomment-3976172462


More information about the hotspot-jfr-dev mailing list