Impossible d'allouer suffisamment de mémoire à Java

Nous avons une application qui a été en cours d'exécution fine pour un an. C'est une application web s'exécutant sous Tomcat 5.5 + JDK 1.5 sous Microsoft Cluster sous Windows Server 2003, Enterprise Edition Service Pack 2. Le serveur dispose de 11 go de RAM (je sais que c'est inutile!) avec la description suivante "d'Extension d'Adresse Physique": je ne sais pas ce que cela signifie.

Le service Tomcat est configuré avec les paramètres suivants: -Xmx1024m -Xms128m

Depuis la semaine dernière, le service ne veulent pas plus et s'arrête avec le message d'erreur suivant: "impossible d'allouer suffisamment de mémoire".

Nous avons essayé plusieurs tests:

  • java -Xmx1024m -version => n'a pas
  • java -Xmx758m -version => n'a pas
  • java -Xmx512m -version => Passé

Nous pouvons donc utiliser moins de mémoire pour la taille maximale du tas, mais ce n'est pas une solution acceptable, car le nombre d'utilisateurs augmentera dans quelques mois et nous avons besoin de définir la taille maximale du tas de 1024Mb.

Aussi je ne comprends pas pourquoi cela a bien fonctionné et puis, soudain, il a cessé de travailler! Il semble que le système d'exploitation est maintenant impossible d'allouer de la mémoire contiguë, ou quelque chose d'autre (taille de fichier de page, l'utilisateur de l'allocation de mémoire, ...)

Il est assez difficile de savoir si quelque chose a changé (OS patch, configuration, ...) parce que l'application web est en cours d'exécution sur le serveur du client et nous n'avons pas accès.

-Xmx1024m -Xmx128m, vraiment? Voulez-vous dire -Xmx1024m -Xms128m (note de l'-Xms)?
Adresse physique de l'Extension: en.wikipedia.org/wiki/Physical_Address_Extension - Cela signifie que les processeurs 32 bits peuvent accéder à plus de 4 GO de ram.
Aussi j'ai oublié de dire que nous avons trouvé un JRE 1.6 installé dans "C:\Program Files\Java\jre1.6.0_07". Le JDK (c'est à dire 1.5) n'est pas dans le chemin d'accès au système, mais les tests ci-dessus utilisé le JDK et non pas le JRE. Aussi Tomcat est configuré pour utiliser le JDK.
Ouups sorru: Oui, c'est -Xmx1024m -Xms128m
Essayez d'autres JVM - Dernière 1.6, la dernière version 1.5, les dernières 1.7. Il y a peut être quelque chose de mal avec la JVM

OriginalL'auteur Eric Taix | 2011-04-26