diff --git a/test/jdk/jdk/jfr/event/oldobject/TestArrayInformation.java b/test/jdk/jdk/jfr/event/oldobject/TestArrayInformation.java
index 17c3dd34dee9b..028024fdd284f 100644
--- a/test/jdk/jdk/jfr/event/oldobject/TestArrayInformation.java
+++ b/test/jdk/jdk/jfr/event/oldobject/TestArrayInformation.java
@@ -56,20 +56,26 @@ private static class ArrayLeak {
     public static void main(String[] args) throws Exception {
         WhiteBox.setWriteAllObjectSamples(true);
 
-        try (Recording recording = new Recording()) {
-            recording.enable(EventNames.OldObjectSample).withoutStackTrace().with("cutoff", "infinity");
-            recording.start();
-            for(int i = 0; i < 25; i++) {
-              leak.add( buildNestedArray(CHAIN_DEPTH));
+        while (true) {
+            try (Recording recording = new Recording()) {
+                recording.enable(EventNames.OldObjectSample).withoutStackTrace().with("cutoff", "infinity");
+                recording.start();
+                for(int i = 0; i < 25; i++) {
+                  leak.add(buildNestedArray(CHAIN_DEPTH));
+                }
+                recording.stop();
+                List<RecordedEvent> events = Events.fromRecording(recording);
+                Events.hasEvents(events);
+                if (verifyObjectArray(events)) {
+                    return;
+                }
             }
-            recording.stop();
-            List<RecordedEvent> events = Events.fromRecording(recording);
-            Events.hasEvents(events);
-            verifyObjectArray(events);
+            leak.clear();
+            System.out.println("Retrying...");
         }
     }
 
-    private static void verifyObjectArray(List<RecordedEvent> events) throws Exception {
+    private static boolean verifyObjectArray(List<RecordedEvent> events) throws Exception {
         for (RecordedEvent e : events) {
             RecordedObject object = e.getValue("object");
             RecordedClass objectType = object.getValue("type");
@@ -103,10 +109,11 @@ private static void verifyObjectArray(List<RecordedEvent> events) throws Excepti
                     }
                     referrer = object.getValue("referrer");
                 }
-                return;
+                return true;
             }
         }
-        throw new Exception("Could not find event with " + ArrayLeak[].class + " as (leak) object");
+        System.out.println("Could not find event with " + ArrayLeak[].class + " as (leak) object");
+        return false;
     }
 
     private static Object buildNestedArray(int depth) {