wartości Xmx i maxMemory() różnią się

wartości Xmx i maxMemory() różnią się
PI
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 13 lat
0

W Eclipsie podałem następujące parametry JVM:
-Xmx1000m
-Xms1000m
-XX:PermSize=24m
-XX:MaxPermSize=24m
-Xss10m
-verbose:gc
-XX:+PrintGCDetails
-XX:CMSInitiatingOccupancyFraction=65
-Dsun.rmi.dgc.client.gcInterval=60000

W aplikacji odczytuję:

Kopiuj
 
rt = Runtime.getRuntime();
rt.maxMemory()/1024/1024;

I zastanawia mnie dlaczego (uzyskana w MB) wartość pamięci jest różna od żądanej parametrem Xmx. Akurat dla (Xmx=1000, PermSize=MaxPermSize=24, Xss=10 ) otrzymuje 966MB. Generalnie zawsze podawana metodą maxMemory() wartość jest o około 3,5% mniejsza niż by wynikało to z Xmx (bez względu na wartości pozostałych parametrów JVM).

Pytania mam takie:

  • skąd bierze się ta różnica (jak nad nią panować)?
  • jak wyodrębniana jest pamięć przeznaczona na stos, jeśli jest ona przedstawiona tak jak znalazłem w necie - plik załącznika.

P.S. skoro Xms=Xmx to można na coś jeszcze zostawiać pamięć co tłumaczyło by to około 3,5% o które się targuje?

Koziołek
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:2 minuty
  • Lokalizacja:Stacktrace
  • Postów:6822
0

Tak: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4391499 to nie jest bug, bo interpretacja -Xmx i maxMemmory zależą od konkretnej implementacji JVM.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
PI
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 13 lat
0

Więc raczej jasne: zależne od JVM...

A co z parametrem Xss ? normalnie przydzielane z YoungGeneration lub OldGeneration, bo w sumie jaka inna możliwość pozostaje?

Koziołek
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:2 minuty
  • Lokalizacja:Stacktrace
  • Postów:6822
0

Tu zależy od GC. Ponieważ w takim np. G1 nie ma czegoś takiego jak generacje. Wróć... Jest, ale inaczej działa.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.