Utiliser plus de mémoire que disponible

J’ai écrit un programme qui développe une firebase database de nombres premiers. Ce programme est écrit en python et fonctionne sur Windows 10 (x64) avec 8 Go de RAM.

Le programme stocke tous les nombres premiers qu’il a trouvés dans une list d’ integers pour d’autres calculs et utilise environ 6-7GB Go de RAM en cours d’exécution. Pendant certaines courses, ce chiffre est tombé en dessous de 100MB L’utilisation de la mémoire rest alors faible pendant toute la durée de l’exécution, mais augmente comme prévu à mesure que d’autres nombres sont ajoutés au tableau principal. Notez que toutes les exécutions ne provoquent pas de perte de mémoire.

Utilisation de la mémoire mesurée avec le gestionnaire de tâches

Ces gouttes apparemment aléatoires m’ont conduit aux théories suivantes:

  1. Il y a un bogue dans mon code, ce qui fait qu’il supprime les données critiques et perturbe les résultats (probablement, mais pas supporté par les résultats)
  2. Python arrive à optimiser mon code après un certain temps.
  3. Python ou Windows compense mon utilisation excessive de la RAM en nettoyant des parties de mon tableau de nombres premiers qui ne sont pas autant utilisées. (entraînant éventuellement des calculs incorrects)
  4. Python ou Windows compense mon utilisation excessive de la RAM en allouant de l’espace disque au lieu de ram.

Des questions

  1. Quelle pourrait être la ou les raisons de cette perte de mémoire?
  2. Comment python gère-t-il les programmes qui utilisent plus que la RAM disponible?
  3. Comment Windows gère-t-il les programmes qui utilisent plus que la RAM disponible?

1, 2 et 3 sont des théories incorrectes.

4 est correct. Windows (pas Python) déplace une partie de votre mémoire de processus pour échanger de l’espace. Ceci est presque totalement transparent pour votre application – vous n’avez rien à faire de spécial pour répondre ou gérer cette situation. La seule chose que vous remarquerez est que votre application peut être plus lente à mesure que les informations sont écrites et lues sur le disque. Mais tout se passe de manière transparente. Voir https://en.wikipedia.org/wiki/Virtual_memory pour plus d’informations.

Avez-vous entendu parler de la pagination? Windows vide certains fichiers RAM (qui n’ont pas été utilisés depuis longtemps) sur votre disque dur pour empêcher votre ordinateur de s’épuiser ou de tomber en panne.

Seul Windows traite de la gestion de la mémoire. Bien que, si vous utilisez Windows 10, cela compressera également votre mémoire, un peu comme un fichier zip.