
Envoyé par
tchize_
Attention que, quand java prend de la mémoire système pour sa jvm (exemple il est à 32M il a besoin de passer à 40M), celle-ci ne sera pas rendue tant que la JVM ne quittera pas. Si ton programme doit tourner longtemps, il faut faire gaffe à ne pas donner à la JVM plus que nécessaire.
Ce n'est pas tout à fait exact.
Par défaut java rend la mémoire sous un certain ratio de mémoire utilisée / mémoire allouée. Je crois que par défaut c'est 70%.
Pour qu'il libère plus souvent (genre 25% + 2 ou 3 petites choses) :
-XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=25 -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled
Sinon allouer 1Go directement c'est un peu barbare. Prévoir 128Mo déjà pour commencer serait pas mal. Il faut penser à trouver les mauvaises gestions de mémoire dans le programme.
Partager