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"); } } }