2012-12-05 8 views

Odpowiedz

5

Interpretacja flagi -Xmx jest zależna od maszyny wirtualnej. Niektóre maszyny wirtualne, , w tym HotSpot, wymuszają niższą granicę efektywnej wartości tej opcji. Wniosek CCC nie powinien w powyższy sposób wymieniać flagi -Xmx .

Reference

4

Zwraca maksymalną ilość pamięci, że maszyna wirtualna Java próba wykorzystania, JVM nie może korzystać z całej pamięci zostały zdefiniowane jako -Xmx parametr tylko sterty.

+0

Czy możesz podać bardziej dogłębny opis? Czy to dlatego, że "maxMemory() powinno zwracać (przybliżenie) pamięć, która jest użyta dla" normalnych "obiektów, i nie powinna zawierać dodatkowej przestrzeni wymaganej przez odśmiecacza (np. Dodatkowej przestrzeni na przetrwanie) i nie powinna włącz do stałego pokolenia. " http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4505762 – LostInComputer

+0

@LostInComputer: Sterty są podzielone na 3 przestrzenie (zmiany w oparciu o implementację jvm), młode, które przeżyły i stały. młody to miejsce, w którym zostaną stworzone nowe obiekty i przeniesione do ocalałego w pierwszym GC. Przeczytaj tę dokumentację http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html – kosa

+0

Rozumiem, że podany przez Ciebie link omawiający, które z tych 3 pokoleń należy uwzględnić podczas raportowania maxMemory(). – kosa

1

-Xmxn

Określ maksymalny rozmiar w bajtach puli alokacji pamięci. Ta wartość musi być wielokrotnością 1024 większą niż 2 MB. Dołącz literę k lub K, aby wskazać kilobajty, lub m lub M, aby wskazać megabajty. Domyślna wartość to: 23 MB. Górny limit dla tej wartości będzie wynosił około 4000 m na platformach Solaris 7 i Solaris 8 SPARC oraz na 2000 m na platformach Solaris 2.6 i x86, z pominięciem kosztów ogólnych. Przykłady:

 -Xmx83886080 
     -Xmx81920k 
     -Xmx80m 

maxMemory()

zwraca maksymalną ilość pamięci, że maszyna wirtualna Java spróbuje użyć. Jeśli nie ma wrodzonego limitu, zostanie zwrócona wartość Long.MAX_VALUE.

Powiązane problemy