Frage

alle 15-30 Minuten Netbeans zeigt eine "java.lang.OutOfMemoryError: PermGen space". Von dem, was ich von Google gelernt dies scheint Classloader Lecks oder Speicherlecks im Allgemeinen bezogen werden.

Leider ist alle Vorschläge, die ich gefunden zu Anwendungsservern verwendet, und ich habe keine Idee, sie zu Netbeans angepasst. (Ich bin nicht einmal sicher, dass es das gleiche Problem)

Ist es ein Problem in meiner Anwendung? Wie kann ich die Quelle finden?

War es hilfreich?

Lösung

Es ist wegen der konstanten Klasse Belastung.

Java speichert Klasse Byte-Code und alle Konstanten (zB String-Konstanten) in permanenten Haufen, die nicht Müll standardmäßig gesammelt wird (was Sinn in der Mehrzahl der Situationen, weil Klassen während der Lebensdauer einer Anwendung nur einmal geladen werden).

In Anwendungen, die oft laden Klassen während eines ganzen Lebens, das ist:

  • Web- und Anwendungsserver während der heißen Umschichtung;
  • IDE, wenn entwickelte Anwendungen laufen (jedes Mal, wenn Run-Button in Netbeans oder Eclipse es lädt Klassen Ihrer Anwendung eine neue);
  • etc Dieses Verhalten ist falsch, weil ein Haufen voll füllt schließlich.

Sie müssen sich auf dauerhaften Heap Garbage Collection drehen, diesen Fehler zu vermeiden.

Ich verwende Optionen

-XX:MaxPermSize=256M
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled

(gestoppt meine Eclipse 3.4 zu werfen "java.lang.OutOfMemoryError: PermGen space" so ist es auch mit Netbeans funktionieren soll).

Bearbeiten : Nur beachten Sie, dass für Netbeans Sie diese Optionen festgelegt in: [Netbeans installation]\etc\netbeans.conf Sie sollten diese Optionen mit -J préfixe und fügen Sie sie in netbeans_default_options (siehe Kommentare in netbeans.conf für weitere Informationen).

Andere Tipps

Versuchen Sie das folgende Argument Netbeans netconf hinzuzufügen: -J-XX: MaxPermSize = 256m

Sehen Sie diese Link auf, wie die Größe von PermSize einzustellen. Wahrscheinlich ist dies kein Problem des Codes, so dass die einzige Lösung, die die PermSize zu erhöhen wäre. Ich habe festgestellt, dass dies ziemlich häufig ist, wenn Sie mit JAXB arbeiten. Im Allgemeinen, wenn Sie viele Bibliotheken verwenden, die sich auch viele andere JAR-Dateien hängen von, möglicherweise nicht die Standardgröße des PermGen Raum groß genug sein.

Diese Blog-Beiträge für mehr Details: Classloader Lecks und Wie das beheben gefürchtete "java.lang.OutOfMemoryError: PermGen Raum"

Wenn Sie eine Web-Anwendung entwickeln, versuchen Sie auf Server vm Option setzen

-Xmx512m -Xms512m -XX: MaxPermSize = 512m

Gehen Sie

zu Tools / Server // Plattform / VM-Optionen (Netbeans 7.4)

Sie können die Optionen Start von Netbeans JVM ändern Sie die Datei /etc/netbeans.conf bearbeite. Ich habe oft diese Art von Fehlern, wenn ich ein Webapp entwickeln, und ich es oft einsetzen. In diesem Fall habe ich neu starten Kater von Zeit zu Zeit.

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