OVH Cloud OVH Cloud

Consommation mémoire

7 réponses
Avatar
JKB
Bonjour à tous,

J'ai un petit souci avec une application java interne. Elle tourne
sur un serveur Linux (jre1.5 de sun). Le truc consomme de plus en
plus de mémoire jusqu'à planter le serveur par un oom (3 Go de ram
tout de même).

J'ai essayé de lancer le truc avec :
/usr/local/jre1.5.0_05/bin/java -Xincgc -Xms256m -Xmx512m -cp ...

Deux questions :
1/ de quel droit java outrepasse -Xmx512m ?
2/ comment limiter cette prise de mémoire ?

Cordialement,

JKB

--
En plus c'est simple, je fais ce genre de trucs en g77 depuis des années :
il suffit d'écrire un wrapper en C. Et comme ça, j'ai le meilleur des deux
mondes : la rigueur quasi-monacale du Fortran, et l'exubérance pétulante du C.

7 réponses

Avatar
Marc Collin
JKB wrote:

Bonjour à tous,

J'ai un petit souci avec une application java interne. Elle tourne
sur un serveur Linux (jre1.5 de sun). Le truc consomme de plus en
plus de mémoire jusqu'à planter le serveur par un oom (3 Go de ram
tout de même).

J'ai essayé de lancer le truc avec :
/usr/local/jre1.5.0_05/bin/java -Xincgc -Xms256m -Xmx512m -cp ...

Deux questions :
1/ de quel droit java outrepasse -Xmx512m ?
2/ comment limiter cette prise de mémoire ?

Cordialement,

JKB



je te conseillerais de regarder les possibilités offerte par java 1.5 au
niveau du profiling
il est possible de voir plus en détail comment la jvm réagit et ainsi tu
pourrait voir pourquoi tu as un problème de mémoire

avoir plus de mémoire ne fait que retarder le problème...

Avatar
JKB
Le 06-11-2005, à propos de
Re: Consommation mémoire,
Marc Collin écrivait dans fr.comp.lang.java :
JKB wrote:

Bonjour à tous,

J'ai un petit souci avec une application java interne. Elle tourne
sur un serveur Linux (jre1.5 de sun). Le truc consomme de plus en
plus de mémoire jusqu'à planter le serveur par un oom (3 Go de ram
tout de même).

J'ai essayé de lancer le truc avec :
/usr/local/jre1.5.0_05/bin/java -Xincgc -Xms256m -Xmx512m -cp ...

Deux questions :
1/ de quel droit java outrepasse -Xmx512m ?
2/ comment limiter cette prise de mémoire ?

Cordialement,

JKB



je te conseillerais de regarder les possibilités offerte par java 1.5 au
niveau du profiling
il est possible de voir plus en détail comment la jvm réagit et ainsi tu
pourrait voir pourquoi tu as un problème de mémoire


J'ai essayé de lancer le profiling, mais le résultat ne me paraît
pas utilisable directement. D'autant que cela ne me fait le coup que
sur un serveur en prod... :-(

avoir plus de mémoire ne fait que retarder le problème...


Je sais...

JKB

--
En plus c'est simple, je fais ce genre de trucs en g77 depuis des années :
il suffit d'écrire un wrapper en C. Et comme ça, j'ai le meilleur des deux
mondes : la rigueur quasi-monacale du Fortran, et l'exubérance pétulante du C.


Avatar
seb666fr2
JKB wrote:
Bonjour à tous,


bonjour


J'ai un petit souci avec une application java interne. Elle tourne
sur un serveur Linux (jre1.5 de sun). Le truc consomme de plus en
plus de mémoire jusqu'à planter le serveur par un oom (3 Go de ram
tout de même).

J'ai essayé de lancer le truc avec :
/usr/local/jre1.5.0_05/bin/java -Xincgc -Xms256m -Xmx512m -cp ...

Deux questions :
1/ de quel droit java outrepasse -Xmx512m ?


Mais qu'est-ce qui vous prouve que java outrepasse cette limite ?

Je vous ai fournit (sur fcold) un bout de code pour vérifier vos dire
(outrepassement de la limite spécifié via l'option -Xmx), l'avez-vous
testé et si oui l'outrepassement a-t-il été vérifié ?

Avatar
JKB
Le 08-11-2005, à propos de
Re: Consommation mémoire,
écrivait dans fr.comp.lang.java :

JKB wrote:
Bonjour à tous,


bonjour


J'ai un petit souci avec une application java interne. Elle tourne
sur un serveur Linux (jre1.5 de sun). Le truc consomme de plus en
plus de mémoire jusqu'à planter le serveur par un oom (3 Go de ram
tout de même).

J'ai essayé de lancer le truc avec :
/usr/local/jre1.5.0_05/bin/java -Xincgc -Xms256m -Xmx512m -cp ...

Deux questions :
1/ de quel droit java outrepasse -Xmx512m ?


Mais qu'est-ce qui vous prouve que java outrepasse cette limite ?

Je vous ai fournit (sur fcold) un bout de code pour vérifier vos dire
(outrepassement de la limite spécifié via l'option -Xmx), l'avez-vous
testé et si oui l'outrepassement a-t-il été vérifié ?


Oui. Cela consomme jusqu'à 3 Go de mémoire virtuelle et ça plante
(la machine virtuelle).

JKB


Avatar
seb666fr2
JKB wrote:
Le 08-11-2005, à propos de
Re: Consommation mémoire,
écrivait dans fr.comp.lang.java :

JKB wrote:
Bonjour à tous,


bonjour


J'ai un petit souci avec une application java interne. Elle tourne
sur un serveur Linux (jre1.5 de sun). Le truc consomme de plus en
plus de mémoire jusqu'à planter le serveur par un oom (3 Go de ram
tout de même).

J'ai essayé de lancer le truc avec :
/usr/local/jre1.5.0_05/bin/java -Xincgc -Xms256m -Xmx512m -cp ...

Deux questions :
1/ de quel droit java outrepasse -Xmx512m ?


Mais qu'est-ce qui vous prouve que java outrepasse cette limite ?

Je vous ai fournit (sur fcold) un bout de code pour vérifier vos dire
(outrepassement de la limite spécifié via l'option -Xmx), l'avez-vo us
testé et si oui l'outrepassement a-t-il été vérifié ?


Oui. Cela consomme jusqu'à 3 Go de mémoire virtuelle et ça plante
(la machine virtuelle).



Vous voulez dire qu'en lançant le programme de test que je vous ai
transmis via un
'java -Xmx512m MemoryConsumer 16' ce dernier affiche (avant de planter)
une ligne de la forme 'allocation de 16 Mo .... memoire allouee:3040 Mo
/ 512 Mo' ? Si tel est le cas, pourriez-vous transmettre (ici ou via
mon email) une copie des sorties du test effectué ?



Avatar
JKB
Le 08-11-2005, à propos de
Re: Consommation mémoire,
écrivait dans fr.comp.lang.java :

JKB wrote:
Le 08-11-2005, à propos de
Re: Consommation mémoire,
écrivait dans fr.comp.lang.java :

JKB wrote:
Bonjour à tous,


bonjour


J'ai un petit souci avec une application java interne. Elle tourne
sur un serveur Linux (jre1.5 de sun). Le truc consomme de plus en
plus de mémoire jusqu'à planter le serveur par un oom (3 Go de ram
tout de même).

J'ai essayé de lancer le truc avec :
/usr/local/jre1.5.0_05/bin/java -Xincgc -Xms256m -Xmx512m -cp ...

Deux questions :
1/ de quel droit java outrepasse -Xmx512m ?


Mais qu'est-ce qui vous prouve que java outrepasse cette limite ?

Je vous ai fournit (sur fcold) un bout de code pour vérifier vos dire
(outrepassement de la limite spécifié via l'option -Xmx), l'avez-vous
testé et si oui l'outrepassement a-t-il été vérifié ?


Oui. Cela consomme jusqu'à 3 Go de mémoire virtuelle et ça plante
(la machine virtuelle).



Vous voulez dire qu'en lançant le programme de test que je vous ai
transmis via un
'java -Xmx512m MemoryConsumer 16' ce dernier affiche (avant de planter)
une ligne de la forme 'allocation de 16 Mo .... memoire allouee:3040 Mo
/ 512 Mo' ? Si tel est le cas, pourriez-vous transmettre (ici ou via
mon email) une copie des sorties du test effectué ?


J'ai fait cela hier sur le serveur en question. Les 3 Go proviennent
d'un top (consommation résidente + virtuelle). Je n'ai pas eu le
temps de fouiller plus avant et n'aurais certainement pas le temps
de le faire avant le milieu de la semaine prochaine.

Cordialement,

JKB




Avatar
jlp
Le 08-11-2005, à propos de
Re: Consommation mémoire,
écrivait dans fr.comp.lang.java :

JKB wrote:

Le 08-11-2005, à propos de
Re: Consommation mémoire,
écrivait dans fr.comp.lang.java :

JKB wrote:

Bonjour à tous,


bonjour


J'ai un petit souci avec une application java interne. Elle tourne
sur un serveur Linux (jre1.5 de sun). Le truc consomme de plus en
plus de mémoire jusqu'à planter le serveur par un oom (3 Go de ram
tout de même).

J'ai essayé de lancer le truc avec :
/usr/local/jre1.5.0_05/bin/java -Xincgc -Xms256m -Xmx512m -cp ...

Deux questions :
1/ de quel droit java outrepasse -Xmx512m ?


Mais qu'est-ce qui vous prouve que java outrepasse cette limite ?

Je vous ai fournit (sur fcold) un bout de code pour vérifier vos dire
(outrepassement de la limite spécifié via l'option -Xmx), l'avez-vous
testé et si oui l'outrepassement a-t-il été vérifié ?


Oui. Cela consomme jusqu'à 3 Go de mémoire virtuelle et ça plante
(la machine virtuelle).



Vous voulez dire qu'en lançant le programme de test que je vous ai
transmis via un
'java -Xmx512m MemoryConsumer 16' ce dernier affiche (avant de planter)
une ligne de la forme 'allocation de 16 Mo .... memoire allouee:3040 Mo
/ 512 Mo' ? Si tel est le cas, pourriez-vous transmettre (ici ou via
mon email) une copie des sorties du test effectué ?



J'ai fait cela hier sur le serveur en question. Les 3 Go proviennent
d'un top (consommation résidente + virtuelle). Je n'ai pas eu le
temps de fouiller plus avant et n'aurais certainement pas le temps
de le faire avant le milieu de la semaine prochaine.

Cordialement,

JKB
Attention à l'analyse de top sous Linux pour java, s'il y a des threads

dans ton programme. Un thread est vu comme un process Unix avec la mes
mêmes caractéristiques mémoire consommée que le thread père donc s'il y
a plusieurs thread dans ton programme, tu peux analyser une taille de
mémoire qui n'est pas en fait cosommée. Utilise plutot ps .