2013-04-17 9 views
8

Prosimy o wskazanie celu tych opcji. Po googlowania myślę: MinHeapFreeRatio nakazuje „zapewniona będzie określony minimalny udział procentowy powierzchni za darmo w pamięci sterty po GC” i MaxHeapFreeRatio mówi „nie więcej niż określony procent przestrzeni będzie wolny w pamięci sterty po GC "[jeśli jest zbyt dużo wolnej pamięci niż określony procent, pamięć zostanie zwrócona do systemu operacyjnego]jaki jest cel -XX: MinHeapFreeRatio i -XX: MaxHeapFreeRatio

Kiedy wypróbowałem te opcje z 10 jako wartością dla obu, nawet jeśli jest więcej niż 80 procent wolnej pamięci sterty, nie został zwolniony z powrotem do systemu operacyjnego.

Szczegóły: Java HotSpot (TM) 64-bitowy serwer VM (1.5.0_15-B04, tryb mieszany) ParallelGC (inaczej znany jako kolekcjoner przepustowości, który jest domyślnym kolektor w klasie serwer VM) I określono -Xms50M i -Xmx1000M jako argumenty jvm OS: Windows 7 Professional (pamięć 8 GB, 64-bitowy system operacyjny)

Uwaga: Próbowałem również z SerialGC, te opcje minimalnego i maksymalnego stosunku sterty zostały zignorowane.

+0

Domyślam się, że ustawienie zakresu procentowego, prawda? nie powinien być ustawiony na 10, ale ustawienie wartości takich jak: 'MinHeapFreeRatio = 10' i' MaxHeapFreeRatio = 90', mam nadzieję, że zrozumiałem to poprawnie. –

Odpowiedz

2

Java bardzo rzadko zwalnia pamięć z powrotem do systemu operacyjnego. Ogólnie mówiąc, aplikacje zużywają więcej pamięci w czasie niż mniej. Czy jesteś pewien, że pamięć jest tak ograniczona, że ​​potrzebujesz tego? Czy na pewno sprawdzasz pamięć rezydentną, a nie wielkość pamięci wirtualnej, która w twoim przypadku będzie zajmować około 1,2 GB przez cały czas.

+1

yes peter Sprawdziłem użycie pamięci za pomocą VisualVM. I myślę, że ParallelGC zignoruje te opcje, po prostu dynamicznie zmienia rozmiar młodych i starych generacji w oparciu o cele "pauzy" i "przepustowości". https://blogs.oracle.com/jonthecollector/entry/it_s_not_magic –

Powiązane problemy