Jaki jest maksymalny rozmiar tablicy w Java'ie? ;-)
Niby wydaje się, że ma to coś z int wspólnego, ale nie będzie to pełny zakres int, bo w Java'ie int jest signed, więc Integer.MAX_VALUE wydaje się być rozsądnym kandydatem...
Ale jak wrzucimy kod w stylu:
var array = new int[Integer.MAX_VALUE];
To poleci nam:
Exception in thread "main" java.lang.OutOfMemoryError: Requested array size exceeds VM limit
nawet gdy uruchomimy JVM z odpowiednim zapasem RAM (8GB, a testowałem z 24GB dla pewności ;-)).
Podobnie:
var array = new int[Integer.MAX_VALUE-1];
wyrzuci taki sam wyjątek.
Ale już:
var array = new int[Integer.MAX_VALUE-2];
zadziała :-)
Przyznam, że próbowałem kiedyś dotrzeć w źródłach JVM do miejsca gdzie to jest zakodowane, a dokładniej gdzie widać skąd to magiczne 2.... ale sam limit chyba znalazłem, ale nie pamiętam powodu.
No chyba, że po prostu te 8 bajtów jest na długość albo opis obiektu?
Chyba mam coś do poszukania :-)
Podobne postybeta
Android - nawet platofrma potrafi przeciwko Tobie knuć ;-)
Distinct (albo unique) w JavaScript
Jak z metody size() w List w Java'ie dostać ujemną liczbę? ;-)
2016 będzie rokiem "nietypowym"
Distinct w JavaScript #2
Brak komentarzy:
Prześlij komentarz