summaryrefslogtreecommitdiffstats
path: root/libjava/classpath/testsuite/java.lang/OutOfMemoryErrorTest.java
blob: 2dd6b15800f2a28fe723bce3092d14282c7c1586 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import java.util.Vector;

/**
 * Under JavaSoft's VM they arbitarily limit the amount of memory
 * a Java application can use (though this can be overridden).  The
 * point here is to check to see whether or not an application being
 * run by Japhar will ever get the OutOfMemoryError or not when resources
 * are scarce. --brian
 */
public class OutOfMemoryErrorTest
{
  public static void main(String[] argv)
    {
      Vector v = null;
      Runtime r = null;
      long free = 0, total = 0;
      // quickly approach memory limit 1M at a time
      try {
	r = Runtime.getRuntime();
	v = new Vector();
	while(true)
	  {
	    v.addElement(new byte[1048576]);
	  }
      }
      // out of memory error
      catch (OutOfMemoryError oomerr1)
	{
	  // slowly encroach on memory limit 2 bytes+ at a time
	  try {
	    while(true)
	      {
		v.addElement(new byte[2]);
	      }
	  }
	  // out of memory error
	  catch (OutOfMemoryError oomerr2)
	    {
	      if (r != null)
		{
		  free = r.freeMemory();
		  total = r.totalMemory();
		  v = null;
		  r.gc();
// 		  System.out.println("free = " + free);
// 		  System.out.println("total = " + total);
		  System.out.println("PASSED: ");
		}
	      else
		System.out.println("FAILED: runtime unknown");
	    }	  
	}
      // generic error
      catch (Error err)
	{
	  System.out.println("FAILED: unexpected error");
	}
      // generic exception
      catch (Exception e)
	{
	  System.out.println("FAILED: unexpected exception");
	}
    }
}
OpenPOWER on IntegriCloud