Par curiosité, j’ai écrit il ya un peu un programme Java qui utilise très rapidement beaucoup de mémoire. (Il ajoute BufferedImages à un arraylist dans une boucle.)
J'ai gardé le Moniteur système Windows ouvert pour observer l'utilisation de la RAM au cours de son exécution.
Lorsque j'ai lancé le programme, l'utilisation de la RAM a augmenté très rapidement et, avec environ 100% de mes 6 Go de RAM, mon ordinateur est devenu extrêmement lent. Après environ une minute, j'ai réussi à terminer le programme et mon ordinateur a lentement repris de la vitesse. Ce qui a attiré mon attention, c’est que l’utilisation de la mémoire a d'abord chuté lentement, puis soudainement, elle est tombée à presque 0 Mo avant de remonter à une utilisation inutilisée autour de 2-2,5 Go.
J'ai pris une capture d'écran de l'utilisation de la RAM dans le Moniteur système:
Je me demandais si quelqu'un pourrait expliquer ce qui se passe lorsque l'ordinateur manque de mémoire et pourquoi il ne retourne pas au repos juste après la fin du programme, mais plutôt environ 60 secondes plus tard? Aussi, pourquoi l'utilisation va-t-elle jusqu'à rien au lieu d'une utilisation inactive?
la source
Réponses:
Lorsque vous commencez à atteindre la limite de mémoire principale, votre système d'exploitation commence à échanger de la mémoire sur le disque pour faire de la place pour plus de choses (on parle de pagination ). C'est pourquoi votre ordinateur devient très lent, car le lecteur de disque est beaucoup plus lent que la RAM, même si vous êtes sur un disque SSD, et c'est aussi la raison pour laquelle votre programme peut continuer sans mémoire principale.
La mémoire inactive est souvent d'abord échangée afin que les programmes actifs puissent avoir autant que possible en RAM. C'est la raison pour laquelle l'utilisation de la mémoire tombe en dessous de l'état d'inactivité habituel. Le système va commencer à permuter à nouveau dans les pages de mémoire et la mémoire inactive va éventuellement se remplir de RAM.
la source