Hi all, Test com/sun/jdi/FinalizerTest.java intermittent fails. This is because arraylist holdAlot do not clear or set as null before recliam heap memory by invoke System.gc. This PR add arraylist.clear() before call System.gc() to avoid OOME in the senond System.runFinalization().
The first System.runFinalization() has a synchronize bug. System.runFinalization() run in another low priority Finalizer thread. In the main thread maybe read variable finalizerRun before Finalizer thread change it. So waitForAFinalizer will run into whille(true) allocation loop sometimes. This PR add a countdownlatch synchronize to make sure main thread read the finalizerRun value after Finalizer thread write it. This PR also remove the unused variable and optimize the imports, and add -Xmx256M to debuggee jvm process, this will make debuggee throw OOME steady in large physical memory machine. Before this PR, test failure probability about 1/30. After this PR test run 3k times and all passed. --------- - [x] I confirm that I make this contribution in accordance with the [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). ------------- Commit messages: - 8343606: Test FinalizerTest.java intermittent fails Debuggee heap OOM Changes: https://git.openjdk.org/jdk/pull/30829/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=30829&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8343606 Stats: 26 lines in 1 file changed: 15 ins; 5 del; 6 mod Patch: https://git.openjdk.org/jdk/pull/30829.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/30829/head:pull/30829 PR: https://git.openjdk.org/jdk/pull/30829
