Wiem, czym jest PermGen, do czego służy, dlaczego zawodzi, jak go zwiększyć itp.
Nie wiem, co właściwie oznacza PermGen. Stałe ... Coś ... Coś?
Czy ktoś wie, co właściwie oznacza PermGen?
Wiem, czym jest PermGen, do czego służy, dlaczego zawodzi, jak go zwiększyć itp.
Nie wiem, co właściwie oznacza PermGen. Stałe ... Coś ... Coś?
Czy ktoś wie, co właściwie oznacza PermGen?
Odpowiedzi:
Trwała generacja. Szczegóły są oczywiście specyficzne dla implementacji.
Krótko mówiąc, zawiera obiekty Java powiązane z klasami i wewnętrznymi ciągami. W implementacji klienta firmy Sun z włączonym udostępnianiem classes.jsa
pamięć jest mapowana w celu utworzenia danych początkowych, z mniej więcej połową tylko do odczytu i połową kopiowaniem przy zapisie.
Obiekty Java, które są zaledwie stare, są przechowywane w generacji Tenured.
PermGen jest używany przez JVM do przechowywania załadowanych klas. Możesz go zwiększyć za pomocą:
-XX:MaxPermSize=384m
jeśli używasz Sun JVM lub OpenJDK.
Więc jeśli otrzymasz OutOfMemoryException: PermGen, musisz albo powiększyć PermGen, albo możesz mieć problemy z ładowaniem klas.
Trwała generacja. Zobacz przewodnik dotyczący strojenia java GC, aby uzyskać więcej informacji na temat garbage collectora.
Niezupełnie związane z pierwotnym pytaniem, ale może ktoś uzna je za przydatne. PermGen jest rzeczywiście obszarem w pamięci, w którym Java utrzymywała swoje klasy. Tak więc wielu z nas natknęło się na OOM w PermGen, gdyby było na przykład dużo zajęć.
Od wersji Java 8 obszar PermGen został zastąpiony obszarem MetaSpace, który jest bardziej wydajny i domyślnie nieograniczony (a ściślej - ograniczony ilością pamięci natywnej, w zależności od 32- lub 64-bitowej jvm i dostępności pamięci wirtualnej systemu operacyjnego). Można go jednak dostroić na kilka sposobów, na przykład określając maksymalny limit obszaru. Więcej przydatnych informacji znajdziesz w tym poście na blogu .
PermGen oznacza Permanent Generation .
Oto krótka notka o DDJ
Permgen oznacza Permanent Generation. Jest to jeden z obszarów pamięci JVM. Jest częścią Heap o stałym rozmiarze za pomocą flagi o nazwie MaxPermSize.
Skąd nazwa „PermGen”?
Ten permgen został nazwany we wczesnych dniach Java. Sieć Permgen przechowuje wszystkie metadane załadowanych klas. Problem polega jednak na tym, że po załadowaniu klasy pozostanie ona w JVM aż do wyłączenia JVM. Więc nazwa permgen jest taka. Ale później pojawiło się dynamiczne ładowanie klas, ale nazwa nie została zmieniona. Ale dzięki Java 8 rozwiązali również ten problem. Teraz permagen został przemianowany na MetaSpace z dynamicznym rozmiarem pamięci.