Hallo Martin,
The Java virtual machine throws an object that is an instance of a subclass of the class VirtualMachineError when an internal error or resource limitation prevents it from implementing the semantics of the Java programming language. See The Java Virtual Machine Specification Second Edition for the definitive discussion of these errors."
Ja, was da steht, weiß ich auch. Aber tatsächlich scheint nur die Instanzierung des Objekts fehl zu schlagen und ansonsten kann man ganz normal weiter arbeiten.
public static void main(String[] argv) {
int i = 0;
StringBuffer string = new StringBuffer();
try {
while(true) {
i++;
string.append("text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text");
}
}
catch(OutOfMemoryError e) {
System.out.println(i);
}
}
Das Funktioniert zum Beispiel ganz ausgezeichnet. Man kann hier natürlich nicht besonders viel machen, ohne gleich die nächste Ausnahme zu erzeugen, aber die VM scheint da sonst keine weiteren Probleme zu haben, auch wenn die Spezifikation anderes erwarten lässt.
Grüße
Daniel