Tomcat Memory Overflow Retting Java_opts
Réponse 1
Définissez la mémoire initiale pour le démarrage de Tomcat
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 autres options fournies par le JVM
Faire des paramètres
3. Exemples, ce qui suit donne la référence pour régler les paramètres de Java JVM dans l'environnement de mémoire 1G:
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 = 384m "
Catalina_opts = "- Server -xms768m -xmx768m -xx: permsize = 128m -xx: maxpermSize = 256m
-Xx: NewSize = 192m -xx: maxnewSize = 384m "
Linux:
Catalina.sh dans le répertoire de /usr/local/apache-tomcat-5.5.23/bin
Ajouté: java_opts = '- xms512m -xmx1024m'
Si vous voulez ajouter "M", cela signifie que c'est MB, sinon ce sera KB, et il y aura une mémoire insuffisante lors du démarrage de Tomcat.
-XMS: valeur initiale
-Xmx: valeur maximale
-Xmn: valeur minimale
Fenêtre
Rejoignez-vous devant Catalina.bat
Définir java_opts = -xms128m -xmx350m
Si vous démarrez Tomcat avec startup.bat, le paramètre OK prendra effet. La mémoire de 200 m sera allouée avec succès.
Cependant, si vous n'exécutez pas StartUp.BAT pour démarrer Tomcat mais utilisez Windows System Service pour démarrer le service TomCat, les paramètres ci-dessus ne prendront pas effet.
C'est-à-dire que définir java_opts = -xms128m -xmx350m ne fonctionne pas. Si vous allouez 200 m de mémoire ci-dessus, vous serez oom ...
Le service Windows exécute bin / tomcat.exe. Il lit la valeur dans le registre, et non dans le paramètre Catalina.bat.
Solution:
Modifiez le registre HKEY_LOCAL_MACHINE / Software / Apache Software Foundation / Tomcat Service Manager / Tomcat5 / Paramètres / JavaOptions
La valeur d'origine est
-Dcatalina.home = "c: / apachegroup / tomcat 5.0"
-Djava.endorsed.dirs = "c: / apachegroup / tomcat 5.0 / commun / approuvé"
-Xrs
Ajouter -xms300m -xmx350m
Redémarrez le service Tomcat et les paramètres prennent effet
Réponse 2
Solution de problème de débordement de mémoire JVM de Tomcat
Mots-clés: la solution de problème de débordement de mémoire JVM de Tomcat
Récemment, je connais un projet développé depuis plusieurs années. J'ai besoin de porter la base de données de MySQL à Oracle. Tout d'abord, pointez la connexion JDBC à MySQL, emballez-la dans Tomcat et exécutez-la. Il n'y a pas de problème. Cependant, lorsque vous pointez la connexion JDBC à Oracle, Tomcat jette en permanence l'erreur Java.lang.outofMemoryError, Google Internet, comprenez le mécanisme de fonctionnement de Tomcat et résolvez le problème. Partagez-le pour référence.
1. Le premier est: java.lang.outofMemoryError: Java Heap Space
expliquer:
Paramètres de taille de 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 l'exécution 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.
Solution:
Régler la taille du tas manuellement
Modifiez Tomcat_Home / Bin / Catalina.BAT et ajoutez la ligne suivante à "Echo" en utilisant Catalina_Base: $ Catalina_Base ":
Code java
Définir Java_OPTS =% java_opts% -server -xms800m -xmx800m -xx: maxNewSize = 256m
Définir Java_OPTS =% java_opts% -server -xms800m -xmx800m -xx: maxNewSize = 256m
Ou modifier Catalina.sh
Ajoutez la ligne suivante à "Echo" en utilisant Catalina_Base: $ cataina_base ":
Java_opts = "$ java_opts -server -xms800m -xmx800m -xx: maxnewsize = 256m"
2. Deuxièmement: java.lang.outofMemoryError: Permgen Space
raison:
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. Cette mémoire est principalement stockée par le JVM en classe et Meta Information. 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:
1. Réglez manuellement la taille maxpermSize
Modifier Tomcat_Home / Bin / Catalina.bat (Catalina.sh sous Linux), en code Java
"Echo" en utilisant Catalina_Base: $ cataina_base "" ajoute la ligne suivante:
Définir java_opts =% java_opts% -server -xx: permsize = 128m -xx: maxpermSize = 512m
"Echo" en utilisant Catalina_Base: $ cataina_base "" ajoute la ligne suivante:
Définir java_opts =% java_opts% -server -xx: permsize = 128m -xx: maxpermSize = 512m
Catalina.sh est:
Code java
Java_opts = "$ java_opts -server -xx: permsize = 128m -xx: maxpermSize = 512m"
Java_opts = "$ java_opts -server -xx: permsize = 128m -xx: maxpermSize = 512m"
J'ai également vu un autre post et j'ai pensé que c'était très bien. Les extraits sont les suivants:
Analyse java.lang.outofMemoryError: Permgen Space
J'ai trouvé que beaucoup de gens attribuent le problème à: Spring, Hibernate, Tomcat, car ils génèrent des classes dynamiquement, ce qui fait déborder de tas permanents dans le JVM. Ensuite, il existe de nombreuses opinions différentes sur la solution. Certaines personnes disent que la mise à niveau de la version Tomcat vers le dernier n'est même pas nécessaire Tomcat. Certaines personnes doutent également du problème du printemps, et il fait très chaud dans le forum du printemps, car l'utilisation de CBLIB au printemps lorsque AOP génère dynamiquement de nombreuses classes.
Mais la question est de savoir pourquoi le même problème se produit avec ces open source de Trump Card, alors est-ce une raison plus fondamentale? Tomcat a répondu à cela d'une manière très obscure dans les questions et réponses. Nous connaissons cette question, mais cette question découle d'une question plus fondamentale.
Donc, quelqu'un a vérifié le JVM plus basique et a trouvé la clé du problème. Il s'avère que la JVM de Sun divise la mémoire en différents domaines, dont l'une est la zone Permenteur pour stocker de nombreuses cours et descriptions de classe. À l'origine, lorsque Sun a été conçu, on pensait que cette zone était fixée lorsque le JVM a été démarré, mais il ne s'attendait pas à ce que la dynamique soit si largement utilisée maintenant. De plus, cette zone a un mécanisme spécial de collecte des ordures. Le problème actuel est qu'après le chargement dynamique de la classe dans ce domaine, GC ne peut pas le recycler!
Pour les deux questions ci-dessus, ma gestion est:
Ajouter la première ligne de Catalina.bat:
Code java
Définir Java_OPTS = -XMS64M -XMX256M -XX: PERMSIZE = 128M -XX: MaxNewSize = 256m -xx: MaxPerMSize = 256m
Définir Java_OPTS = -XMS64M -XMX256M -XX: PERMSIZE = 128M -XX: MaxNewSize = 256m -xx: MaxPerMSize = 256m
Ajouter la première ligne de Catalina.sh:
Code java
Java_opts =
-XMS64M
-Xmx256m
-Xx: permsize = 128m
-Xx: maxNewSize = 256m
-Xx: maxpermSize = 256m
La solution parfaite au débordement de la mémoire Tomcat dans l'article ci-dessus est tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.