Posts Tagged ‘memory’
Zagadka z Java Memory
Ostatnia zagadka okazała się bardzo łatwa. Zatem dziś pora na nieco trudniejszą i ciekawszą.
Oto kod zagadki.
public class JVMPuzzle { private final int dataSize = (int) (Runtime.getRuntime().maxMemory() * 0.6); public void go() { { byte[] bytes1 = new byte[dataSize]; } // for (int i = 0; i < 3; i++) { // System.out.println("Barista prosi: JVM zwolnij pamięć!"); // } byte[] bytes2 = new byte[dataSize]; } public static void main(String[] args) { new JVMPuzzle().go(); } }
Po skompilowaniu i uruchomieniu powyższego kodu otrzymujemy java.lang.OutOfMemoryError
:
<barista@javaczyherbata.pl> java JVMPuzzle Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at JVMPuzzle.go(JVMPuzzle.java:14) at JVMPuzzle.main(JVMPuzzle.java:18)
Natomiast jeśli odkomentujemy linie 10-12, skompilujemy i uruchomimy program ponownie, to błąd braku pamięci się nie pojawi.
Jak to jest, że JVM słucha się Baristy? 🙂