Que se passe-t-il si vous spécifiez une taille de segment maximale supérieure à la RAM disponible
Demandé dans une interview. Qu'advient-il si vous spécifiez max de la taille du segment (Xmx) de plus de RAM disponible?
Je me demande aussi ce qui se passe si vous spécifiez min de la taille du segment (Xms) de plus de RAM disponible?
source d'informationauteur illcar
Vous devez vous connecter pour publier un commentaire.
La façon la plus simple de le savoir est d'essayer et de voir.
Edit:
Il y a en fait au moins deux réponses à cette question. Probablement sur un système 64 bits, comme cela a été mentionné, votre application peut croître et se développer dans l'utilisation de la mémoire et de commencer à se débattant. Sur un système 32 bits de l'histoire est un peu différente, car le système d'exploitation n'est pas en mesure de vous donner beaucoup d'espace de tas. Par exemple, si je lance une application sur Windows XP 32 bits de java avec l'option de ligne de commande -Xmx2000m il va mourir avec un message semblable au suivant:
Dans Linux 32 bits de java, j'ai le avec -Xmx3000m:
Dans Linux 32 bits de java, j'ai le avec -Xmx6000m
Avec 64 bits de Java, la JVM ne vous permettent d'allouer plus de mémoire qu'il y a de la RAM physique, mais si vous demandez une très grande quantité de mémoire, la jvm sera de nouveau échouer avec une erreur.
Rien De Dramatique
Bien que cela peut arriver avec certains bas de gamme, les systèmes embarqués, ces jours, il serait tout à fait rare de voir un non-virtuelle Java environnement, même dans incorporé et impossible sur un ordinateur de bureau ou serveur.
Donc, rien de dramatique qui allait arriver, mais une fois que vous utilisez la mémoire vive disponible, l'allocation supplémentaire (virtuel) de la mémoire serait juste de retarder la remise en état (garbage collection) et provoquer le programme pour démarrer la pagination.
Si grave, cette condition est appelée "raclée" et ce n'est pas une bonne chose. Tout ça pourrait fonctionner lentement.