Grund: Folgendes sind häufig:
1. Die Menge der in Speicher geladenen Daten ist zu groß, z. B. zu viel Daten aus der Datenbank gleichzeitig.
2. Es gibt Hinweise auf Objekte in der Sammlungsklasse, und sie werden nach dem Gebrauch nicht gelöscht, so dass die JVM nicht recycelt werden kann.
3.. Es gibt tote Schleifen im Code oder Schleifen, die zu viele Wiederholungen erzeugen.
4. Fehler in der verwendeten Software von Drittanbietern;
5. Der Speicherwert des Startparameters ist zu klein eingestellt.
Häufige Fehleraufforderungen:
1.Tomcat: java.lang.outofMemoryError: Permgen Space
2.Tomcat: java.lang.outofMemoryError: Java Heap Space
3.Weblogic: Grundursache für ServletException java.lang.outofMemoryError
4.Resin: java.lang.outofMemoryError
5.java:java.lang.outofMemoryError
lösen:
1. Lösung für den vom Anwendungsserver aufgeforderten Fehler: Setzen Sie den Speicherwert des Startparameters so groß genug.
2. Lösungen für den durch Java -Code verursachten Fehler: Konzentrieren Sie sich auf die folgenden Punkte:
1) Überprüfen Sie, ob im Code tote Schleifen oder rekursive Anrufe vorhanden sind.
2) Überprüfen Sie, ob es eine große Schleife gibt, die wiederholt neue Objekteinheiten erzeugt.
3) Überprüfen Sie, ob es eine Abfrage gibt, die alle Daten in der Datenbankabfrage erhalten hat. Wenn Sie jeweils 100.000 Datensätze in den Speicher bringen, kann dies im Allgemeinen Speicherüberlauf verursachen. Dieses Problem ist ziemlich versteckt. Bevor sie online gingen, gab es in der Datenbank weniger Daten und es war nicht einfach, Probleme zu haben. Nach dem Online -Gehen befanden sich mehr Daten in der Datenbank, und eine einzige Abfrage kann einen Speicherüberlauf verursachen. Versuchen Sie daher, Pagination zur Abfrage von Datenbankabfragen zu verwenden.
4) Überprüfen Sie, ob die Sammlungsobjekte wie die Liste nach der Verwendung nicht gelöscht wurden. Sammlungsobjekte wie Liste und Karte haben immer Verweise auf die Objekte, sodass diese Objekte von GC nicht recycelt werden können.
Fall:
1. Wenn Hibernate -Abfragen von Daten abfragt, werden zu viele Daten gleichzeitig angegeben. Später wird der Code in diesem Teil angepasst und nur die angegebene Datenmenge gleichzeitig abgerufen, wodurch das Problem erfolgreich gelöst wird. 2. Bei Stresstests erscheint outofMemoryError und es wird festgestellt, dass die Ressource der Sitzung nicht veröffentlicht wurde. Es ist am besten, die Ressource der Sitzung über die Methode für ungültig () der Sitzung zu veröffentlichen.
3.. Eine tote Schleife erscheint im Programm.
4. OutofMemoryError erscheint, wenn der Tomcat bereitgestellt und ausgeführt wird und der Speicherparameterwert erhöht wird, um dieses Problem zu lösen.
java.lang.outofMemoryError in Tomcat: Java Heap Space Exception Handling
1. Heapgröße Die Einstellungen des JVM -Heaps beziehen sich auf die Einstellungen des Speicherplatzes, den die JVM während des Java -Programmbetriebs vorstellen 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.
2. Lösung: Manuell festlegen Haufengröße und modifizieren Sie tomcat_home/bin/catalina.sh die folgende Zeile in "echo" mit Catalina_Base: $ Catalina_Base "": java_opts = " -Server -xms800m -xmx800m -xx: maxnesize = 256m"
java.lang.outofMemoryError: Permgen -Raumausnahmehandling in Tomcat
1. Permgen -Raum Der vollständige Name des Permgen -Raums ist der dauerhafte Raum, der sich auf den dauerhaften Speicherbereich des Speichers bezieht. Dieses Stück Erinnerung wird hauptsächlich vom JVM 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 Sie daher viele Klasse in Ihrer Anwendung haben, ist es sehr wahrscheinlich, dass der Permgen -Raum -Fehler 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: Setzen Sie manuell die maxpermisierte Größe und modifizieren Sie tomcat_home/bin/catalina.sh die folgende Zeile in "echo" mit Catalina_Base: $ Catalina_base "": java_opts = " -Server -xx: Permsize = 64m -xx: Maxperms = 128M Empfehlung: Verschieben Sie dieselbe Empfehlung: TOMCAT/MAXPERMSIZE = 128M -Empfehlungen: Move the tomcat/shows. Verzeichnis, um den Zweck der Reduzierung der wiederholten Speicherverwendung von Glasdokumenten zu erreichen.
java.lang.outofMemoryError -Ausnahmehandling in Weblogic
Fehleraufforderung: "Grundursache für ErvleTException java.lang.outofMemoryError"
Lösung: Passen Sie die Parameter in commenv in bea/weblogic/gemeinsam an: Sonne, wenn "%production_mode%" == "True" goto sun_prod_mode set java_vm = -Client set mem_args = -xms256m -xmx512m -xx: maxperms = 2566 -Set Java_OPTICTIONS =%java_oppions =%java_opmy -provisation = 256MIGUS. : sun_prod_mode set java_vm = -server set mem_args = -xms256m -xmx512m -xx: maxpermsize = 256m Goto Weiter
java.lang.outofMemoryError Wenn Eclipse JBoss: Permgen Space -Ausnahmehandling ausführt
Wenn Sie JBoss in Eclipse ausführen, wenn es zu lange dauert, manchmal, manchmal java.lang.outofMemoryError: Permgen -Space -Fehler. Hier ist eine Lösung für Sie:
1) Klicken Sie auf den kleinen Pfeil neben dem Debug -Symbol.
2) Klicken Sie auf den Menüelement "Debugg Configurations ...".
3) Wählen Sie auf der linken Seite "JBoss v4.2 at localhost" unter dem Baum "generischer Server".
4) Klicken Sie rechts auf die Registerkarte "Argumente" und fügen Sie sie in "VM -Argumente" hinzu:
-Dprogram.name = run.bat -djava.endorsed.dirs = "d:/jboss405/bin /../ lib/usw." -xms128m -xmx512m -xx: permsize = 64m -xx: maxperms = 256mmmms xx:
5) Wenn Sie JBoss im Befehlszeilenmodus ausführen oder direkt auf "run.bat" klicken, müssen Sie die JVM -Optionen in der Datei bin/run.conf ändern. Suchen Sie die Java_Opts = " -XMS128M -xmx512 m ..." Absatz und dann add "-xx: permsize = 64m --xx: maxperms = 256m" bis zum Ende. Speichern ist es in Ordnung.
6) Hinweis: Die Nummern 128, 512, 64 und 256 können gemäß der Konfiguration Ihrer Maschine eingestellt werden und dann auf "Bewerben" klicken.
java.lang.outofMemoryError -Ausnahmehandling unter Harz
Grund: Dieser Fehler tritt auf, weil das physische JVM -Speicher zu klein ist. Die standardmäßige Java -Virtual Machine hat einen maximalen Speicher von nur 64 Megabyte, was möglicherweise kein Problem während der Entwicklung und Debuggierung darstellt. Es ist jedoch weit davon entfernt, die Anforderungen in den tatsächlichen Anwendungsumgebungen zu erfüllen, es sei denn, Ihre Bewerbung ist sehr gering und hat keinen Zugriff. Andernfalls finden Sie möglicherweise einen Fehler im Paket java.lang.outofMemoryError, nachdem das Programm für einen bestimmten Zeitraum ausgeführt wird. Daher müssen wir die Größe des dem Reservoir zur Verfügung stehenden virtuellen Maschinenspeicher erhöhen.
Lösung: Ändern Sie die Args -Option in /usr/local/resin/bin/httpd.sh, um Parameter -xms (Anfangsspeicher) und -xmx hinzuzufügen (maximale Speichergröße kann verwendet werden), mit der die physische Speicherverwendung des JVM begrenzt werden kann. Zum Beispiel: Nach dem Einstellen von args = " -xms128m -xmx256m" beträgt der anfängliche physische Speicher von JVM 128 m und der maximale physische Speicher kann verwendet werden 256 m. Diese beiden Werte sollten vom Systemadministrator gemäß der tatsächlichen Situation des Servers festgelegt werden.
Das obige ist der vollständige Inhalt der perfekten Lösung für das Problem der Fehlerhandhabung von Java.lang.outofMemoryError, das Sie Ihnen gebracht haben. Ich hoffe, jeder unterstützt Wulin.com ~