From aefd4ac4a336f00c067bcb91b95472ccc9a6bf83 Mon Sep 17 00:00:00 2001 From: Erik Gahlin Date: Wed, 22 Sep 2021 11:45:29 +0000 Subject: [PATCH] 8258734: jdk/jfr/event/oldobject/TestClassLoaderLeak.java failed with "RuntimeException: Could not find class leak" Reviewed-by: mgronlun --- .../jdk/jfr/event/oldobject/TestClassLoaderLeak.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/test/jdk/jdk/jfr/event/oldobject/TestClassLoaderLeak.java b/test/jdk/jdk/jfr/event/oldobject/TestClassLoaderLeak.java index 8799c39f8e5..d43275c645c 100644 --- a/test/jdk/jdk/jfr/event/oldobject/TestClassLoaderLeak.java +++ b/test/jdk/jdk/jfr/event/oldobject/TestClassLoaderLeak.java @@ -56,11 +56,14 @@ public class TestClassLoaderLeak { r.enable(EventNames.OldObjectSample).withStackTrace().with("cutoff", "infinity"); r.start(); TestClassLoader testClassLoader = new TestClassLoader(); - for (Class clazz : testClassLoader.loadClasses(OldObjects.MIN_SIZE / 20)) { + for (Class clazz : testClassLoader.loadClasses(OldObjects.MIN_SIZE / 200)) { // Allocate array to trigger sampling code path for interpreter / c1 - for (int i = 0; i < 20; i++) { + for (int i = 0; i < 200; i++) { Object classArray = Array.newInstance(clazz, 20); - Array.set(classArray, i, clazz.newInstance()); + // No need to fill whole array + for (int j = 0; j < 5; j++) { + Array.set(classArray, j, clazz.getConstructors()[0].newInstance()); + } classObjects.add(classArray); } } @@ -68,6 +71,7 @@ public class TestClassLoaderLeak { List events = Events.fromRecording(r); Events.hasEvents(events); for (RecordedEvent e : events) { + System.out.println(e); RecordedObject object = e.getValue("object"); RecordedClass rc = object.getValue("type"); if (rc.getName().contains("TestClass")) {