From: <dfr...@us...> - 2007-08-09 08:05:25
|
Revision: 13252 http://jikesrvm.svn.sourceforge.net/jikesrvm/?rev=13252&view=rev Author: dframpton-oss Date: 2007-08-09 01:05:24 -0700 (Thu, 09 Aug 2007) Log Message: ----------- Improve ReferenceTest to correctly test soft reference semantics. Modified Paths: -------------- rvmroot/trunk/testing/tests/gctest/src/ReferenceTest.java Modified: rvmroot/trunk/testing/tests/gctest/src/ReferenceTest.java =================================================================== --- rvmroot/trunk/testing/tests/gctest/src/ReferenceTest.java 2007-08-09 06:14:14 UTC (rev 13251) +++ rvmroot/trunk/testing/tests/gctest/src/ReferenceTest.java 2007-08-09 08:05:24 UTC (rev 13252) @@ -62,12 +62,19 @@ dummy = allocateUnit(); } - public static Object allocateHold (double amt) { // amt in Mb - int rounds = MBtoUnits(amt); - Object [] a = new Object[rounds]; - for (int i=0; i<rounds; i++) - a[i] = allocateUnit(); - return a; + private static Object outOfMemoryHandle; + + public static void allocateUntilOOM () { + try { + while(true) { + Object[] myArray = new Object[10000]; + myArray[0] = outOfMemoryHandle; + outOfMemoryHandle = myArray; + } + } catch (OutOfMemoryError oome) { + outOfMemoryHandle = null; + System.out.println("Caught OutOfMemoryError"); + } } public static double allocateUntilNextGC() { @@ -169,7 +176,7 @@ Reference<Object[]> [] sra = allocateReferenceArray(SOFT, 0.75 * initialHeapSize, srq); double softAvail = checkReferenceArray(sra, srq); check("Fraction of soft references before GC still live = " + softAvail, (softAvail == 1.0)); - allocateHold(0.5 * initialHeapSize); + allocateUntilOOM(); softAvail = checkReferenceArray(sra, srq); check("Fraction of soft references after GC still live = " + softAvail, (softAvail >= 0.00) && (softAvail <= 0.67), This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |