Frage

Ich weiß, was PermGen ist, was es für verwendet wird, warum es fehlschlägt, wie es etc zu erhöhen.

Was ich nicht weiß, ist das, was PermGen eigentlich steht. Permanent ... Gene ... etwas?

Wer weiß, was PermGen eigentlich steht?

War es hilfreich?

Lösung

Permanent Generation. Details sind natürlich Umsetzung spezifisch.

Kurz gesagt, es enthält die Java-Klassen mit zugeordneten Objekten und internierten Strings. In Suns Client-Implementierung mit dem Austausch auf, ist classes.jsa Speicher abgebildet, die Anfangsdaten zu bilden, wobei etwa die Hälfte schreibgeschützt und Halb copy-on-write.

Java-Objekte, die nur alt sind, in der Tenured Generation gehalten.

Andere Tipps

PermGen wird von der JVM verwendet geladene Klassen zu halten. Sie können es erhöhen mit:

-XX:MaxPermSize=384m

Wenn Sie die Sun JVM oder OpenJDK verwenden.

Wenn Sie also eine OutOfMemoryException erhalten: PermGen müssen Sie entweder machen PermGen größer oder Sie könnten Klassenlade Probleme werden mit

.

Permanent Generation. Sehen Sie sich die Java- GC Tuning Guide für weitere Details auf dem Garbage Collector.

Nicht wirklich Spiel auf die ursprüngliche Frage bezogen, aber jemand sein kann, wird es hilfreich sein. PermGen ist in der Tat ein Bereich im Speicher, wo Java verwendet, um seine Klassen zu halten. So viele von uns kam über OOM in PermGen, wenn es zum Beispiel viele Klassen.

Da Java 8 hat PermGen Bereich von metaSpace Bereich ersetzt, die effizienter ist und ist unbegrenzt standardmäßig (oder genauer gesagt - begrenzt durch Menge von nativem Speichern, abhängig von 32- oder 64-Bit-JVM und OS virtuelle Speicherverfügbarkeit) . Jedoch ist es möglich, sie in gewisser Weise abzustimmen, indem beispielsweise eine maximale Grenze für den Bereich angeben. Sie können weitere nützliche Informationen in rel="noreferrer">.

Wenn ich mich richtig erinnere, steht das Gen für die Erzeugung, wie in einem Generation Garbage Collector (die jüngeren Objekte anders als Midlife-und „permanent“ Objekte behandelt). Prinzip der Lokalität legt nahe, dass vor kurzem erstellte Objekte zuerst abgewischt werden.

PermGen steht für Permanent-Generation. Es ist eine der JVM Speicherbereiche. Es ist ein Teil von Heap mit fester Größe durch einen Flag namens MaxPermSize verwendet wird.

Warum der Name "PermGen"?

Dieses Permgen wurde in frühen Tagen von Java genannt. Permgen Netz hält alle Metadaten von geladenen Klassen. Aber das Problem ist, dass, sobald eine Klasse geladen wird es in der JVM bis JVM Shutdown bleiben werde. So Name Permgen wird dafür entscheiden. Aber später, die dynamische Laden von Klassen kam in Bild, aber Name wurde nicht geändert. Aber mit Java 8 , sie dieses Thema angesprochen hat, auch. Nun permagen wurde umbenannt in metaSpace mit dynamischer Speichergröße.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top