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

Reply via email to