Question

Il y a beaucoup de questions qui demandent ceci ou une question similaire.

Ils donnent toute la commande qui doit être exécutée, ce que je ne comprends pas où dois-je écrire cette commande. Je veux augmenter de façon permanente l'espace de tas pour mes applications tomcat.

Je lis cette page http: //javahowto.blogspot .com / 2006/06/6-common-erreurs en création java-heap.html et il est dit dans la section Tomcat

  

Arrêter le serveur Tomcat, ensemble CATALINA_OPTS variable d'environnement, puis redémarrez Tomcat. Regardez le fichier tomcat-install / bin / catalina.sh ou catalina.bat pour la façon dont cette variable est utilisée. Par exemple,

     

set CATALINA_OPTS = -Xms512m -Xmx512m (Windows, pas "" autour de la valeur)
  exportation CATALINA_OPTS = "-" Xms512m -Xmx512m (ksh / bash "" autour de la valeur)
  setenv CATALINA_OPTS "-Xms512m -Xmx512m" (tcsh / csh "" autour de la valeur)

Je remplace la ligne

  

set CATALINA_OPTS =

avec

  

set CATALINA_OPTS = -Xms512m -Xmx512m

Mais je reçois toujours l'erreur.

  

javax.servlet.ServletException: exécution Servlet a généré une exception

     

cause racine

     

java.lang.OutOfMemoryError: espace tas Java       java.lang.reflect.Array.multiNewArray (méthode native)       java.lang.reflect.Array.newInstance (Array.java:90)       nom.tam.util.ArrayFuncs.newInstance (ArrayFuncs.java:1028)       nom.tam.fits.ImageData.read (ImageData.java:259)       nom.tam.fits.Fits.readHDU (Fits.java:573)       controller.UploadServlet.retreiveFITSFileFields (UploadServlet.java:206)       controller.ScanServerFiles.doPost (ScanServerFiles.java:39)       javax.servlet.http.HttpServlet.service (HttpServlet.java:637)       javax.servlet.http.HttpServlet.service (HttpServlet.java:717)

Était-ce utile?

La solution

Votre changement peut bien fonctionner. Votre demande ont besoin de beaucoup de mémoire -. Les émissions de traces de pile certains REPORTAGES liés

Je devine que l'erreur se soit tout de suite, avec un gros fichier, ou se plus tard, après plusieurs demandes.

Si l'erreur se produit tout de suite, vous pouvez augmenter la mémoire encore, ou d'enquêter savoir pourquoi tant de mémoire est nécessaire pour un fichier.

Si l'erreur se produit après plusieurs demandes, alors vous pourriez avoir une fuite de mémoire - où les objets ne sont pas récupérés par le garbage collector. L'utilisation d'un outil comme JProfiler peut vous aider à surveiller la quantité de mémoire utilisée par votre VM et peut vous aider à voir ce qui utilise cette mémoire et pourquoi les objets ne sont pas récupérés par le garbage collector.

Autres conseils

Il existe un mécanisme pour le faire sans modifier les fichiers qui sont dans la distribution. Vous pouvez créer un %CATALINA_HOME%\bin\setenv.bat de fichier séparé ou $CATALINA_HOME/bin/setenv.sh et mettre vos variables d'environnement. De plus, les paramètres de la mémoire s'appliquent à la machine virtuelle Java, Tomcat pas, donc je mis à la place la variable JAVA_OPTS:

set JAVA_OPTS=-Xmx512m

Tout d'abord, vous ne pouvez pas modifier les paramètres de mémoire uniquement pour une application tomcat mais pour toutes les instances de tomcat.

Si vous utilisez tomcat de la console (en utilisant startup.bat), vous devez modifier catalina.bat et jouer avec CATALINA_OPTS. Par exemple:

set CATALINA_OPTS=-Xms512m -Xmx512m

appliquera tomcat Relancer les nouveaux paramètres.

Si vous obtenez toujours OutOfMemoryError vous devez savoir la quantité de mémoire que votre besoin d'application à ce moment (nom.tam.util.ArrayFuncs ...). Vous devez soit optimiser l'application ou simplement augmenter la mémoire fournie à tomcat.

  • Ouvrez l'onglet du serveur dans Eclipse
  • clic droit ouvert
  • cliquez sur la configuration Lauch ouverte
  • Aller aux arguments
  • Ici, vous pouvez ajouter dans les arguments VM après approuvé

    -Xms64m -Xmx256m
    

Vous devez ajouter les lignes suivantes dans votre fichier catalina.sh.

export CATALINA_OPTS="-Xms512M -Xmx1024M"

UPDATE : le contenu catalina.sh dit clairement -

  

Ne pas définir les variables dans ce script. Au lieu de les mettre dans un setenv.sh de script dans CATALINA_BASE / bin pour garder vos personnalisations séparées.

Vous pouvez ajouter ci-dessus dans la place setenv.sh (créer un fichier si elle n'existe pas).

si vous utilisez Windows, il est très simple. Il suffit d'aller à des variables système Environnement (informatique clic droit> Propriétés> Paramètres système avancés> Variables Environnement); créer une nouvelle variable système avec name = CATALINA_OPTS et valeur = -Xms512m -Xmx1024m. Redémarrez Tomcat et amusez-vous!

Easiest façon de faire est: (Dans Linux / Ububuntu e.t.c)

Allez dans le répertoire bin tomcat:

cd /opt/tomcat8.5/bin

Créer un nouveau fichier sous le répertoire bin « de setenv.sh » et sauvegarder les entrées ci-dessous mention en elle.

export CATALINA_OPTS="$CATALINA_OPTS -Xms512m"
export CATALINA_OPTS="$CATALINA_OPTS -Xmx2048m"
export CATALINA_OPTS="$CATALINA_OPTS -XX:MaxPermSize=256m"

et commande problème:

./catalina.sh run

Dans votre fichier journal catalina vous pouvez voir l'entrée comme ceci:

INFO [main] VersionLoggerListener.log Command line argument: -Xms512m
INFO [main] VersionLoggerListener.log Command line argument: -Xmx2048m
INFO [main] VersionLoggerListener.log Command line argument: -XX:MaxPermSize=256m

Ce qui confirme que les changements ci-dessus ont eu lieu.

En outre, la valeur de « Xms512m » et « -Xmx2048m » peut être modifié en conséquence dans le fichier setenv.sh.

Démarrage de tomcat pourrait se faire en deux étapes aussi bien. cd /opt/tomcat8.5/bin

Step #1
run ./setenv.sh 
Step #2
./startup.sh

Il suffit de régler cette ligne supplémentaire dans le fichier catalina.bat

LIGNE NON AUTOUR: 143

set "CATALINA_OPTS=-Xms512m -Xmx512m"

et redémarrez le service Tomcat

Pour Windows service, vous devez exécuter tomcat9w.exe (ou 6W / 7W / 8W) en fonction de votre version de tomcat. Tout d'abord, assurez-vous que tomcat est arrêté. Double-cliquez ensuite sur tomcat9w.exe. Accédez à l'onglet Java. Si vous savez que vous avez 64 bits de Windows avec 64 bits et 64 bits Java Tomcat, alors ne hésitez pas à mettre la mémoire supérieure à 512. Vous aurez besoin de faire un peu de gestionnaire de tâches de surveillance afin de déterminer à quelle hauteur pour le régler. Pour la plupart des applications développées en 2019 ... Je vous recommande un pool de mémoire initiale de 1024, et la piscine de mémoire maximale de 2048. Bien sûr, si votre ordinateur a des tonnes de RAM ... ne hésitez pas à aller aussi haut que vous le souhaitez. En outre, voir cette réponse: Comment augmenter la mémoire maximale Taille du pool? Apache Tomcat 9

vous pouvez le configurer dans catalina.sh comme CATALINA_OPTS = -Xms512m -Xmx512m

Ouvrez votre tomcat-dir / bin / catalina.sh et ajoutez ce qui suit la ligne partout -

CATALINA_OPTS="$CATALINA_OPTS -Xms1024m -Xmx3024m"

et redémarrez votre tomcat

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top