Hello, In the development of Automatic Heap Sizing (AHS) for ZGC we run into intermittent failures in the ClassesByName2Test.java test, and also RedefineCrossEvent.java which runs ClassesByName2Test.java.
In AHS we are running GCs more frequently, which affects how often classes are unloaded for example. In the tests mentioned above, we see that LambdaForm classes are unloaded before we call `vm().classesByName(name)`, which fails the test. LambdaForm classes are hidden, so can be unloaded independently of their class loader. I suggest we make this test more robust by skipping verification of hidden classes, which include the LambdaForm classes we've observed so far. Checking for a slash `/` should be enough to determine if a class is hidden or not. A "valid"/"normal" Java class should not have a slash in their name, as specified by "normal" classes having a "binary name", which can't include a slash. See [https://docs.oracle.com/en/java/javase/26/docs/api/java.base/java/lang/Class.html#getName()](https://docs.oracle.com/en/java/javase/26/docs/api/java.base/java/lang/Class.html#getName()) for details on the class name returned by `getName()`. Another way to get a similar failure to this in mainline is to run with the following JVM flags, which also runs frequent GCs: -XX:+UseZGC -XX:+ZCollectionIntervalOnly -XX:ZCollectionIntervalMajor=0.001 I've also removed the commented-out print, which was very useful in debugging this. Testing: * We've not been able to see failures for this test after this fix. * Oracle's tier1, tier2 and tier6 (where we've observed failures so far) --------- - [x] I confirm that I make this contribution in accordance with the [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). ------------- Commit messages: - 8382529: Tests com/sun/jdi/RedefineCrossEvent.java and com/sun/jdi/ClassesByName2Test.java fail when running frequent GC Changes: https://git.openjdk.org/jdk/pull/30825/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=30825&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8382529 Stats: 12 lines in 1 file changed: 11 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/30825.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/30825/head:pull/30825 PR: https://git.openjdk.org/jdk/pull/30825
