Raison: les éléments suivants sont courants:
1. La quantité de données chargées en mémoire est trop grande, comme prendre trop de données dans la base de données à la fois;
2. Il y a des références à des objets dans la classe de collecte, et ils ne sont pas effacés après utilisation, afin que le JVM ne puisse pas être recyclé;
3. Il y a des boucles mortes dans le code ou des boucles qui produisent trop de répétitions;
4. Bogues dans un logiciel tiers utilisé;
5. La valeur de mémoire du paramètre de démarrage est définie trop petite;
Invites d'erreur courantes:
1.Tomcat: java.lang.outofMemoryError: Permgen Space
2.Tomcat: java.lang.outofMemoryError: Java Heap Space
3.Weblogic: Cause profonde de ServletException Java.lang.outofMemoryError
4. Resin: java.lang.outofMemoryError
5.java:java.lang.outofMemoryError
résoudre:
1. Solution à l'erreur invitée par le serveur d'applications: définissez la valeur de mémoire du paramètre de démarrage pour être suffisamment grande.
2. Solutions à l'erreur causée par le code Java: Focus sur les points suivants:
1) Vérifiez s'il y a des boucles mortes ou des appels récursifs dans le code.
2) Vérifiez s'il existe une grande boucle qui produit à plusieurs reprises de nouvelles entités d'objets.
3) Vérifiez s'il existe une requête qui a obtenu toutes les données de la requête de la base de données. De manière générale, si vous prenez 100 000 enregistrements en mémoire à la fois, cela peut entraîner un débordement de mémoire. Ce problème est assez caché. Avant d'aller en ligne, il y avait moins de données dans la base de données et ce n'était pas facile d'avoir des problèmes. Après s'être connecté, il y avait plus de données dans la base de données et une seule requête pourrait provoquer un débordement de mémoire. Par conséquent, essayez d'utiliser la pagination pour interroger les requêtes de base de données.
4) Vérifiez si les objets de collection tels que la liste, MAP n'ont pas été effacés après utilisation. Les objets de collection tels que la liste et la carte auront toujours des références aux objets, ce qui rend ces objets incapables d'être recyclés par GC.
Cas:
1. Lorsque Hibernate Requête des données, il interroge trop de données en même temps. Plus tard, le code de cette partie est ajusté, et seule la quantité spécifiée de données est récupérée à la fois, résolvant avec succès le problème. 2. Lors des tests de stress, OutOfMemoryError apparaît et il est constaté que la ressource de la session n'a pas été publiée. Il est préférable de libérer la ressource de la session via la méthode invalidate () de la session.
3. Une boucle morte apparaît dans le programme.
4. OutOfMemoryError apparaît lorsque le Tomcat est déployé et exécuté, et la valeur du paramètre de mémoire est augmentée pour résoudre ce problème.
java.lang.outofMemoryError dans Tomcat: exception de l'espace de tas Java
1. Taille du tas Les paramètres du tas JVM se réfèrent aux paramètres de l'espace mémoire que le JVM peut fournir pendant le fonctionnement du programme Java. Lorsque le JVM démarre, il définira automatiquement la valeur de la taille du tas. Son espace initial (c'est-à-dire -XMS) est 1/64 de mémoire physique, et l'espace maximum (-xmx) est 1/4 de mémoire physique. Vous pouvez utiliser le -xmn -xms -xmx et d'autres options fournies par le JVM pour le définir. La taille de la taille du tas est la somme de la jeune génération et de la génération titulaire. CONSEIL: Ce message d'exception sera lancé si 98% du temps est utilisé pour GC et que la taille du tas disponible est inférieure à 2%. CONSEIL: La taille maximale du tas ne doit pas dépasser 80% de la mémoire physique disponible. Généralement, définissez les options -xms et -xmx à la même chose, tandis que -xmn est 1/4 de la valeur -xmx.
2. Solution: définissez manuellement la taille du tas et modifiez Tomcat_Home / Bin / Catalina.sh Ajoutez la ligne suivante à "Echo" en utilisant Catalina_Base: $ Catalina_Base "": java_opts = "- Server -xms800m -xmx800m -xx: maxnewsize = 256m"
java.lang.outofMemoryError: Perrgen Space Exception Manipture à Tomcat
1. Permgen Space Le nom complet de l'espace Permgen est l'espace de génération permanente, qui fait référence à la zone de stockage permanente de la mémoire. Ce morceau de mémoire est principalement stocké par le JVM. La classe sera placée dans l'espace Permgen lorsqu'il sera chargé. Il est différent de la zone de tas où l'instance de classe (instance) est stockée. GC (Collection Garbage) ne nettoiera pas l'espace Permgen pendant l'exécution du programme principal. Par conséquent, s'il y a beaucoup de classe dans votre application, il est très probable qu'une erreur d'espace Permgen se produira. Cette erreur est courante lorsque le serveur Web précompile JSP. Si vous utilisez un grand nombre de pots tiers sous votre application Web, la taille dépasse la taille par défaut de JVM (4M), ce message d'erreur sera généré.
Solution: Définissez manuellement la taille maxpermSize et modifiez Tomcat_Home / Bin / Catalina.sh Ajoutez la ligne suivante à "Echo" en utilisant Catalina_Base: $ Catalina_Base "": java_opts = "- Server -xx: permSize = 64m -xx: MaxPermSize = 128m Recommandation: Modifiez le même fichier de jar de Tomcat / Tomcat / Lib Director, To To-Parcy Atteindre le but de réduire l'utilisation répétée de la mémoire des documents JAR.
java.lang.outofMemoryError Exception Gestion dans WebLogic
Invite d'erreur: "Cause profonde d'ErvletException java.lang.outofMemoryError"
Solution: ajustez les paramètres dans commenv dans bea / weblogic / commun: Sun if "% Production_Mode%" == "true" goto sun_prod_mode set java_vm = -client set mem_args = -xms256m -xmx512m -xx: maxPermSize = 256m set java_options =% java_optionrs : SUN_PROD_MODE SET JAVA_VM = -SERVER SET MEM_ARGS = -XMS256M -XMX512M -XX: MAXPERMSIZE = 256M GOTO CONTINOTE
java.lang.outofMemoryError Quand Eclipse exécute JBoss: Permgen Space Exception Manipulation
Lors de l'exécution de JBoss dans Eclipse, si cela prend trop de temps, parfois java.lang.outofMemoryError: Permgen Space Error. Voici une solution pour vous:
1) Cliquez sur la petite flèche à côté de l'icône de débogage;
2) Cliquez sur l'élément de menu "Configurations de débogage ...";
3) Sélectionnez "JBoss V4.2 sur LocalHost" dans l'arborescence "Server générique" à gauche;
4) Cliquez sur l'onglet "Arguments" à droite et ajoutez-le dans "VM Arguments":
-Dprogram.name = run.bat -djava.endorsed.dirs = "d: / jboss405 / bin /../ lib / approuvé" -xms128m -xmx512m -xx: permsize = 64m -xx: maxpermSize = 256m
5) Si vous exécutez JBoss en mode ligne de commande ou cliquez directement sur "run.bat", vous devez modifier les options JVM dans le fichier bin / run.conf, trouver le java_opts = "- xms128m -xmx512m ..." paragraph, puis ajouter "-xx: permsize = 64m -xx: maxpermSize = 256m" à la fin. Enregistrer c'est OK.
6) Remarque: Les numéros 128, 512, 64 et 256 peuvent être ajustés en fonction de la configuration de votre machine, puis cliquez sur "Appliquer".
java.lang.outofMemoryError Exception Manipulation sous résine
Raison: cette erreur se produit parce que la mémoire physique JVM est trop petite. La machine virtuelle Java par défaut a une mémoire maximale de seulement 64 mégaoctets, ce qui peut être un problème pendant le développement et le débogage, mais il est loin de répondre aux besoins dans les environnements d'application réels à moins que votre application ne soit très petite et n'a pas accès. Sinon, vous pouvez trouver une erreur dans le package java.lang.outofMemoryError après que le programme fonctionne pendant un certain temps. Par conséquent, nous devons augmenter la taille de la mémoire de machine virtuelle disponible pour le réservoir.
Solution: modifiez l'option Args dans /usr/local/resin/bin/httpd.sh pour ajouter des paramètres -xms (mémoire initiale) et -xmx (la taille maximale de la mémoire peut être utilisée) qui peut être utilisée pour limiter l'utilisation de la mémoire physique du JVM. Par exemple: après définir args = "- xms128m -xmx256m", la mémoire physique initiale de JVM est de 128 m et la mémoire physique maximale peut être utilisée est de 256 m. Ces deux valeurs doivent être définies par l'administrateur système en fonction de la situation réelle du serveur.
Ce qui précède est le contenu complet de la solution parfaite au problème de gestion des erreurs de java.lang.outofMemoryError qui vous a été apporté. J'espère que tout le monde soutiendra wulin.com ~