Lorsque je démarre JVM, il réserve au moins {{xms}} mémoire, non? Cela signifie que cette mémoire est privée pour le processus JVM (il est malloced), oui? Lorsque JVM doit augmenter le tas dans les réserves (mallocs) plus de mémoire. Mais combien? Je ne crois pas qu'il se réserve exactement autant qu'il a besoin, il y a probablement une certaine taille de pas (piscine?).Java tas/taille du pool
Comment cette "taille de pas" a-t-elle pu être configurée?
Et tout ce qui arrive jusqu'à {{xmx}} est atteint et OOM est lancé, non?
Lorsque JVM démarre le GC? Pas quand il s'agit de xmx, mais quand il s'agit de la taille de tas réservée (haut de ce pool)?
Si tel est le cas, il est préférable de régler xms à proximité de xmx pour éviter de nombreux GC inutiles. Je vais avoir un GC énorme au lieu de nombreux petits, bug chaque GC gèle ma JVM, donc il vaut mieux en avoir un, non?
mineur en ce qui concerne les grandes collections vs juste se assurer que votre -Xmn dire votre eden ratio de tas d'occupation est pas trop petite. Je pense que le défaut est de 1: 3, mais je préfère généralement 1:10. Mais cela dépend totalement de votre application. – ddd