J'ai rencontré un problème avec une application Java que j'ai écrite causant des problèmes de performance matérielle. Le problème (j'en suis à peu près certain), c'est que quelques-unes des machines sur lesquelles je lance l'application ont seulement 1 Go de mémoire. Quand je lance mon application Java, je mets la taille du tas à -Xms 512m -Xmx 1024mLa mémoire s'épuise à côté de Xmx et Xms
Ma première question, est-ce que ma supposition est correcte, cela va évidemment causer des problèmes de performance parce que j'alloue toutes les machines mémoire pour le tas java?
Cela conduit à une autre question.Je lance jconsole sur l'application et le suivi de l'utilisation de la mémoire des applications.Ce que je vois est que l'application consomme environ 30mb au démarrage, arrive à environ 150mb et le garbage collector fonctionne et il redescend à 30 Mo. Ce que je vois aussi en utilisant le haut sur le pid est que l'application commence en utilisant environ 6% de mémoire puis grimpe lentement jusqu'à environ 20% .Je ne comprends pas cela. Pourquoi n'obtiendrait-il que jusqu'à 20% d'utilisation de la mémoire lorsque j'allouerai 1 Go. Ne devrait-il pas aller à 100%? . Aussi, pourquoi utilise-t-il autant de mémoire (20%) quand il ne semble pas que l'application utilise plus de 150mb?
Je pense qu'il est assez évident que j'ai besoin d'ajuster mon Xms et Xmx et cela devrait résoudre le problème, mais j'essaie de mieux comprendre ce qui se passe exactement.