12 Stimmen

Ist der Java PermGen-Speicherplatz Teil des gesamten VM-Speichers?

Angenommen, ich starte meine Java-VM mit den folgenden Parametern:

-Xms1024m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m

Machen Sie den 512m PermGen Raum hinzufügen. auf den 1024m-Speicher oder sind sie ein Teil davon ? Oder mit anderen Worten, habe ich einen Gesamtspeicherverbrauch von 1536m oder von 1024m? Bedeutet das im letzteren Fall, dass der Anwendung nur 512m für andere Zwecke als PermGen-Speicher zur Verfügung stehen?

Bitte lassen Sie es mich wissen, falls diese Frage einen Mangel an Verständnis für den PermGen-Raum offenbart ;-)

16voto

Andrzej Doyle Punkte 99892

En -Xms y -Xmx Parameter beziehen sich auf Haufen Speicher, während der PermGen-Speicher ein separater Speicherpool ist.

Mit anderen Worten, die gesamte Speichergröße, die Ihrer Java-Anwendung zur Verfügung steht, beträgt 1,5 GiB statt 1 GiB, und Sie erhalten das volle Gigabyte an Speicherplatz für Heap-zugeordnete Objekte.

1voto

user5652931 Punkte 41

Ich bin gerade über Google auf diese Seite gestoßen. Dies ist eine gewisse Verwirrung, ob PerGen Teil von Heap ist oder nicht: Die Antwort lautet: "Heap ist in kleinere Teile/Generationen aufgeteilt und diese Teile sind: Young Generation, Old oder Tenured Generation, und Permanent Generation". Dies ist die Aussage von Oracle, um es vorsichtig auszudrücken. Es ist viel sinnvoller, sich an den Aussagen des Urhebers zu orientieren als an denen des Publikums auf der Webdomäne.

Eine kurze Anmerkung zu PermGen: Die permanente Generierung enthält Metadaten, die von der JVM benötigt werden, um die in der Anwendung verwendeten Klassen und Methoden zu beschreiben. Die permanente Generierung wird von der JVM zur Laufzeit auf der Grundlage der von der Anwendung verwendeten Klassen aufgefüllt. Darüber hinaus können hier auch Klassen und Methoden der Java SE-Bibliothek gespeichert werden.

0voto

vsingh Punkte 5947

In der JVM von Sun ist die permanente Erzeugung nicht Teil des Heaps. Es ist ein anderer Bereich für Klassendefinitionen und zugehörige Daten sowie für internierte Strings.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X