2012-03-09 21 views
8

Zakładając 64-bitową maszynę JVM, czy istnieje jakaś istotna korzyść w utrzymaniu niewielkiego rozmiaru MaxPermSize?Czy korzystanie z MaxPermSize ma niewielkie znaczenie?

Jest to w kontekście aplikacji Java EE, która jest często ponownie wdrażana i ma przeciek programu ładującego klasy. W średnioterminowej perspektywie wydaje się bardzo rozsądnym po prostu podbić MaxPermSize do absurdalnej wartości - o ile nie spowoduje to rozerwania przestrzeni wymiany dysku.

Ponieważ kod wdrożonej aplikacji jest prawie całkowicie nieużywany (oprócz tego, który dotyczy wycieku), jest on stronicowany przez system operacyjny. Tak więc obciążenie pamięci fizycznej z nieotwartych detrytusów wydaje się znikome; zostało to zweryfikowane przez obserwację RSS (rozmiar zestawu roboczego na Uniksie).

Czy są inne efekty, którymi powinienem się przejmować?

Odpowiedz

6

Od JVM HotSpot FAQ

powinienem zwiększyć wielkość stałej generacji w VM klienta?

To zawsze będzie wezwanie do sądu. Ogólnie zwiększenie wielkości pokolenia (i dotyczy to nie tylko stałego pokolenia) może zmniejszyć częstość występowania różnorodnych problemów. Może to jednak spowodować, że inne procesy będą nadmiernie stronicowane i/lub wyrzucane na śmietnik lub rzucane poza wyjątki pamięci.

Dostępne są dwa tryby awarii.

Podczas podnoszenia MaxPermSize możliwe jest, że wcześniej dobrze zachowane programy, które były używane do zbierania śmieci, aby odzyskać stałą przestrzeń pokoleń, umrą w wyniku niekończącego się stronicowania. W przypadku generacji permanentnej dzieje się tak zwykle tylko przy intensywnym interweniującym łańcuchach tymczasowych.

Innym trybem awarii jest to, że przestrzeń adresowa musi być zarezerwowana dla generacji ciągłej, a to zmniejszy dostępną dla pozostałej części sterty (maksymalna -Xmx może wtedy być zbyt duża). Spowoduje to awarię programów skonfigurowanych tak, aby wykorzystywały całą dostępną przestrzeń w celu inicjalizacji.

także this article mówi:

więc skorzystać z faktu, że klasy są utrzymywane w stałej generacji zbierając stały generację przed zbierania zwyczajnych pokolenia. A trwałe pokolenie jest obecnie gromadzone seryjnie.

Duże ciągłe wytwarzanie może powodować dłuższy czas GC, jak sądzę.

+0

Tak, GC jest niepokojąca - obawiam się, że wszystkie posłania muszą być przywołane. Dzięki! –

Powiązane problemy