2013-04-27 16 views
5

Pobiegłem ten test z -Xmx256M określić maksymalny rozmiar obiektu, że mogę stworzyć na stercieJak caculate maksymalny rozmiar obiektu, jeśli znany jest maksymalny rozmiar sterty?

for (int m = 128;; m++) { 
     try { 
      byte[] a = new byte[m * 1024 * 1024]; 
     } catch (OutOfMemoryError e) { 
      System.out.println(m + "M"); 
      break; 
     } 
    } 

i dostał 171m. Czy istnieje sposób na obliczenie tego rozmiaru?

+1

Czy przyrost pętli for powinien wynosić 'm ++ '? – michaelb958

+0

Tak, to jest m, dzięki –

+1

Użyłem '-XX: + UseG1GC' i otrzymałem' 255M'. – johnchen902

Odpowiedz

2

Czy istnieje sposób na obliczenie tego rozmiaru?

nr Maksymalna allocatable rozmiar obiektu w zależności od ilości ciągły wolne miejsce w stercie. AFAIK, nie ma praktycznego sposobu, by dowiedzieć się, co to może być ... poza robieniem tego, co obecnie robisz.

0

To ciekawe, biegnę samo z:

java -Xmx256M -XX:+AggressiveHeap HeapTest //I hoped this would help 

Ale ja ciągle się mniej niż z AggressiveHeap.

Powiązane problemy