Beim Untersuchen Warum verhält sich ThreadPoolExecutor anders, wenn das Java-Programm in Eclipse und von der Befehlszeile aus ausgeführt wird? Ich habe einen Test geschrieben, der einen sehr seltsamen OutOfMemoryError (max mem = 256 Mb) wirft
class A {
byte[] buf = new byte[150_000_000];
protected void finalize() {
int i = 1;
}
}
A a1 = new A();
a1 = null;
A a2 = new A();
Kommentiere int i = 1
aus und der Test funktioniert. Soweit ich verstehe, wenn finalize
leer ist, ignoriert HotSpot es einfach. Aber wie kann nur ein praktisch leeres finalize
-Aufruf den GC / JVM unterbrechen?