[Tomcat - FileUpload] - Inquiétude concernant la memoire du JVM
Bonjour tout le monde,
Vous allez bien ?
Apres avoir testé une application pendant plusieurs heures : mettre des images dans une base de donnée,via un navigateur (en passant par des JSP et servlet) j'ai eu la mauvaise surprise de découvrir le message suivant :
FileUpload java.lang.OutOfMemoryError: Java heap space
Donc j'ai fais plusieurs recherche et il s'averait que la JVM n'allouerait pas assez de mémoire.
Je vous donne d'abord ma config et ensuite jpasse au questions qui m'inquiete :
OS : Debian 3.1 (sarge)
Tomcat : 5.0.28
Java : 1.5_0_05b
1/ Maintnenant quand je fais java -Xmx256M, ca m'affiche toutes les commandes possible de java... bizarre ou normal ?
2/ Ensuite, y'a t'il moyen de savoir le total de mémoire allouer par la JVM ?
3/ Y'a t'il possibilité de savoir combien de mémoire disponible reste-t'il à la JVM à un instant donné ?
4/ Et pour finir, y'a t'il moyen de liberer l'espace JVM apres une action ? (parce que vous vous imaginez si un nombre important personnes upload chacune une image de 100k, la JVM risque de se remplir trop vite et y'a forcément une solution pour cela ?)
Je vous remercie d'avance,
Si vous avez aussi de la bonne doc sur cela (meme en anglais), ca serait sympa mais j'aimerais aussi avoir vos avis car la je suis dans le flou total au niveau de ce sujet.
Bonne journée.
++
ShinJava
Re: [Tomcat - FileUpload] - Inquietude de la memoire du JVM
Salut,
Citation:
Envoyé par ShinJava
1/ Maintnenant quand je fais java -Xmx256M, ca m'affiche toutes les commandes possible de java... bizarre ou normal ?
Si tu tapes seulement java -Xmx256M c'est normal puisqu'il s'attend a avoir un nom de classe à lancer...
Si comme je pense tu veux passer ce paramètre lors du démarrage de Tomcat, il faut que tu modifie la variable JAVA_OPTS du fichier catalina.sh (ou catalina.bat sous Windows) pour y ajouter -Xmx256m.
Source : http://tomcat.apache.org/faq/memory.html#adjust
Citation:
Envoyé par ShinJava
2/ Ensuite, y'a t'il moyen de savoir le total de mémoire allouer par la JVM ?
3/ Y'a t'il possibilité de savoir combien de mémoire disponible reste-t'il à la JVM à un instant donné ?
La classe Runtime doit répondre à cela...
Citation:
Envoyé par ShinJava
4/ Et pour finir, y'a t'il moyen de liberer l'espace JVM apres une action ? (parce que vous vous imaginez si un nombre important personnes upload chacune une image de 100k, la JVM risque de se remplir trop vite et y'a forcément une solution pour cela ?)
En Java il suffit de ne plus avoir aucune référence vers un objet pour qu'il soit 'nettoyé' par le Garbage Collector... Par contre tu ne peux pas vraiment forcer cela...
Mais je ne pense pas que l'upload de fichier de 100Ko puisse posé de tel problème...
Sur cette page tu as des détails sur les causes possibles de OutOfMemory : http://tomcat.apache.org/faq/memory.html#why
Plus généralement vérifie bien que tu ne conserves pas des références d'objet dont tu n'a plus l'utilité (en particulier si tu abuses des scopes session et application).
Vérifie également que tout tes flux soient bien fermés (fichier, connection JDBC, etc...).
a++