Tomcat -Speicherüberlaufeinstellung java_opts
Antwort 1
Legen Sie den anfänglichen Speicher für Tomcat -Starts ein
Sein Anfangsraum (d. H. -xms) beträgt 1/64 des physischen Speichers, und der maximale Speicherplatz (-xmx) beträgt 1/4 des physischen Gedächtnisses. Sie können die -xmn -xms -xmx und andere vom JVM bereitgestellte Optionen verwenden
Einstellungen erstellen
3. Beispiele gibt Folgendes die Referenz zum Festlegen der Parameter von Java JVM in 1G Speicherumgebung:
Java_opts = " -Server -xms800m -xmx800m
-Xx: permSize = 64m -xx: maxnewSize = 256m -xx: maxpermSize = 128m -djava.awt.headless = true "
Java_opts = " -server -xms768m -xmx768m -xx: permSize = 128m -xx: maxpermSize = 256m -xx:
NewSize = 192m -xx: maxnewSIZE = 384 m "
Catalina_opts = " -Server -xms768m -xmx768m -xx: permSize = 128m -xx: maxpermSize = 256 m
-Xx: newSize = 192m -xx: maxnewSize = 384m "
Linux:
catalina.sh im /usr/local/apache-tomcat-5.5.23/bin Directory
Hinzugefügt: java_opts = ' -xms512m -xmx1024m'
Wenn Sie "M" hinzufügen möchten, bedeutet dies, dass es sich um MB handelt, ansonsten wird es KB sein, und es gibt unzureichende Speicher beim Starten von Tomcat.
-Xms: Anfangswert
-XMX: Maximaler Wert
-Xmn: Mindestwert
Fenster
Machen Sie vor Catalina.bat
Setzen Sie java_opts = -xms128m -xmx350m
Wenn Sie Tomcat mit Startup.bat starten, wird die OK -Einstellung wirksam. Das 200 -m -Speicher wird erfolgreich zugewiesen.
Wenn Sie jedoch Startup.bat nicht ausführen, um Tomcat zu starten, aber den Windows -Systemdienst zum Starten von Tomcat -Dienst verwenden, werden die oben genannten Einstellungen nicht wirksam.
Das heißt, setzen Sie java_opts = -xms128m -xmx350m nicht. Wenn Sie oben 200 m Speicher zuweisen, werden Sie oom ...
Der Windows -Dienst führt bin/tomcat.exe aus. Es liest den Wert in der Registrierung, nicht in der Catalina.bat -Einstellung.
Lösung:
Ändern Sie die Registrierung HKEY_LOCAL_MACHINE/SOFTWARE/APache Software Foundation/Tomcat Service Manager/Tomcat5/Parameter/JavaOptions
Der ursprüngliche Wert ist
-Dcatalina.home = "C:/apacheGroup/Tomcat 5.0"
-Djava.endorsed.dirs = "C:/apacheGroup/Tomcat 5.0/Common/Endorsed"
-Xrs
Fügen Sie -xms300m -xmx350m hinzu
Starten Sie den Tomcat -Service neu, und die Einstellungen werden wirksam
Antwort 2
Tomcats JVM -Speicher -Überlaufproblemlösung von Tomcat
Schlüsselwort: Tomcats JVM -Speicherüberlaufproblemlösung
Vor kurzem bin ich mit einem Projekt vertraut, das seit mehreren Jahren entwickelt wird. Ich muss die Datenbank von MySQL nach Oracle portieren. Zeigen Sie zunächst die JDBC -Verbindung zu MySQL, verpacken Sie sie in Tomcat und führen Sie sie aus. Es gibt kein Problem. Wenn Tomcat jedoch auf die JDBC -Verbindung auf Oracle hinweist, wirft Tomcat kontinuierlich den Fehler von Java.lang.outofMemoryError aus, Google im Internet, verstehen Sie den Betriebsmechanismus von Tomcat und lösen Sie das Problem. Teilen Sie es als Referenz.
1. Erstens ist: java.lang.outofMemoryError: Java Heap Space
erklären:
Einstellungen der Haufengrößen
Die Einstellungen des JVM -Heaps beziehen sich auf die Einstellungen des Speicherplatzes, den die JVM während des Java -Programms liefern kann. Wenn der JVM startet, wird der Wert der Haufengröße automatisch festgelegt. Sein Anfangsraum (d. H. -xms) beträgt 1/64 des physischen Speichers, und der maximale Speicherplatz (-xmx) beträgt 1/4 des physischen Gedächtnisses. Sie können die -xmn -xms -xmx und andere vom JVM bereitgestellte Optionen verwenden, um sie festzulegen. Die Größe der Haufengröße ist die Summe der jungen Generation und der festen Gattung.
TIPP: Diese Ausnahmemeldung wird geworfen, wenn in 98% der Zeit für GC verwendet wird und die verfügbare Haufengröße weniger als 2% beträgt.
Tipp: Die maximale Haufengröße sollte 80% des verfügbaren physischen Speichers nicht überschreiten. Setzen Sie im Allgemeinen die Optionen -xms und -xmx auf die gleiche, während -xmn 1/4 des -xmx -Werts ist.
Lösung:
Haufen Haufen manuell einstellen
Ändern Sie tomcat_home/bin/catalina.bat und fügen Sie die folgende Zeile zu "Echo" mit Catalina_base hinzu: $ catalina_base ":
Java -Code
Setzen Sie java_opts =% java_opts% -server
Setzen Sie java_opts =% java_opts% -server
Oder modifizieren Sie Catalina.sh
Fügen Sie die folgende Zeile mit Catalina_Base: $ Catalina_Base "hinzu:" Echo ":
Java_opts = "$ java_opts -server
2. Zweitens: java.lang.outofMemoryError: Permgen -Raum
Grund:
Der vollständige Name des Permgen -Raums ist der dauerhafte Raum der Generation, der sich auf den dauerhaften Speicherbereich des Speichers bezieht. Dieser Gedächtnis wird hauptsächlich von der JVM in Klassen- und Meta -Informationen gespeichert. Die Klasse wird beim Laden im Permgen -Raum platziert. Es unterscheidet sich von dem Haufenbereich, in dem die Klasseninstanz (Instanz) gespeichert wird. Die GC (Müllsammlung) wird während der Hauptprogrammlaufzeit keinen Platz für den Permgen -Platz aufräumen. Wenn Ihre Anwendung eine Menge Klasse enthält, ist es sehr wahrscheinlich, dass der Fehler auf Permgen -Raum auftritt. Dieser Fehler ist üblich, wenn der Webserver JSP vorkompiliert. Wenn Sie eine große Anzahl von Gläser mit Drittanbietern unter Ihrer Web-App verwenden, überschreitet die Größe die Standardgröße von JVM (4M), dann wird diese Fehlermeldung generiert.
Lösung:
1. Stellen Sie die maxpermisierte Größe manuell ein
Modifizieren Sie Tomcat_home/bin/catalina.bat (Catalina.sh unter Linux) im Java -Code
"echo" mit Catalina_base: $ Catalina_base "" fügt die folgende Zeile hinzu:
Setzen Sie java_opts =% java_opts% -Server -xx: permsize = 128m -xx: maxpermSize = 512 m
"echo" mit Catalina_base: $ Catalina_base "" fügt die folgende Zeile hinzu:
Setzen Sie java_opts =% java_opts% -Server -xx: permsize = 128m -xx: maxpermSize = 512 m
Catalina.sh ist:
Java -Code
Java_opts = "$ java_opts -server -xx: permsize = 128m -xx: maxpermSize = 512m"
Java_opts = "$ java_opts -server -xx: permsize = 128m -xx: maxpermSize = 512m"
Ich sah auch einen weiteren Beitrag und fand es sehr gut. Die Auszüge sind wie folgt:
Analyse java.lang.outofMemoryError: Permgen -Raum
Ich fand, dass viele Menschen das Problem zuschreiben: Frühling, Winterschlaf, Tomcat, weil sie dynamisch Klassen erzeugen und dauerhafte Haufen im JVM überfließen lassen. Dann gibt es viele verschiedene Meinungen zur Lösung. Einige Leute sagen, dass die Aufrüstung der Tomcat -Version auf die neueste Tomcat nicht einmal erforderlich ist. Einige Leute bezweifeln auch das Problem des Frühlings und es ist im Frühjahrsforum sehr heiß, da die Verwendung von CBLIB im Frühjahr, wenn AOP dynamisch viele Klassen erzeugt.
Die Frage ist jedoch, warum das gleiche Problem bei dieser Trump -Karte Open Source auftritt. Ist es also ein grundlegenderer Grund? Tomcat antwortete dies auf sehr dunkle Weise in Fragen und Antworten. Wir wissen diese Frage, aber diese Frage stammt aus einer grundlegenderen Frage.
Also überprüfte jemand den grundlegenderen JVM und fand den Schlüssel zum Problem. Es stellt sich heraus, dass die JVM von Sun das Gedächtnis in verschiedene Bereiche unterteilt, von denen einer der Permenterbereich ist, um viele Klassen und Klassenbeschreibungen zu speichern. Ursprünglich, als Sun entworfen wurde, wurde angenommen, dass dieses Gebiet festgelegt wurde, als die JVM gestartet wurde, aber er erwartete nicht, dass die Dynamik jetzt so weit verbreitet wäre. Darüber hinaus verfügt dieser Bereich über einen speziellen Mülleimermechanismus. Das aktuelle Problem ist, dass GC sie nach dynamischem Laden der Klasse in diesen Bereich nicht recyceln kann!
Für die beiden oben genannten Fragen lautet mein Handling:
Fügen Sie in der ersten Zeile von Catalina.bat hinzu:
Java -Code
Setzen Sie java_opts = -xms64m -xmx256m -xx: permsize = 128m -xx: maxnewSize = 256m -xx: maxpermsize = 256m
Setzen Sie java_opts = -xms64m -xmx256m -xx: permsize = 128m -xx: maxnewSize = 256m -xx: maxpermsize = 256m
Fügen Sie in der ersten Zeile von Catalina.sh: hinzu:
Java -Code
Java_opts =
-Xms64m
-Xmx256m
-Xx: permSize = 128m
-Xx: maxnewSize = 256 m
-Xx: maxpermSize = 256m
Die perfekte Lösung für den Tomcat -Speicherüberlauf im obigen Artikel ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.