W szczególności, dlaczego miałby pomóc rozwiązać problem PermGen OutOfMemoryError?
Ponadto punkty bonusowe za odpowiedź, która kieruje mnie do dokumentacji argumentów JVM ...
java
jvm
jvm-arguments
Geoff
źródło
źródło
Odpowiedzi:
Stała przestrzeń to miejsce, w którym klasy, metody, internalizowane łańcuchy i podobne obiekty używane przez maszynę wirtualną są przechowywane i nigdy nie są zwalniane (stąd nazwa).
W tym artykule Oracle zwięźle przedstawiono działanie i parametryzację HotSpot GC i zaleca się powiększenie tego miejsca, jeśli załadujesz wiele klas (zwykle tak jest w przypadku serwerów aplikacji i niektórych IDE, takich jak Eclipse):
Zauważ, że w tej innej dokumentacji Oracle wymieniono inne argumenty HotSpot.
Aktualizacja: Począwszy od Java 8, zarówno przestrzeń permgen, jak i to ustawienie zniknęły. Model pamięci używany dla załadowanych klas i metod jest inny i nie jest ograniczony (z ustawieniami domyślnymi). Ten błąd nie powinien już być wyświetlany.
źródło
-XX:PermSize -XX:MaxPermSize
są używane do ustawienia rozmiaru dla generowania ciągłego.Permanent Generation: Permanent Generation to miejsce przechowywania plików klas. Są one wynikiem skompilowanych klas i stron JSP. Jeśli to miejsce jest pełne, uruchamia pełne odśmiecanie. Jeśli funkcja pełnego odśmiecania nie może wyczyścić starych niereferencyjnych klas i nie ma już miejsca na rozszerzenie stałej przestrzeni, generowany jest błąd braku pamięci (OOME) i JVM ulega awarii.
źródło
W Javie 8 ten parametr jest powszechnie używany do drukowania komunikatu ostrzegawczego takiego jak ten:
Powodem, dla którego pojawia się ten komunikat w Javie 8, jest to, że Permgen został zastąpiony przez Metaspace, aby rozwiązać niektóre z wad PermGen (jak mogłeś to zobaczyć, jedną z tych wad jest to, że miał ustalony rozmiar).
Do Twojej wiadomości: artykuł na temat Metaspace: http://java-latte.blogspot.in/2014/03/metaspace-in-java-8.html
źródło