Maison >développement back-end >Tutoriel Python >Comment Python effectue la gestion de la mémoire
Python introduit un mécanisme : le comptage de références pour gérer la mémoire.
Python utilise en interne le comptage de références pour garder une trace des objets en mémoire. Python enregistre en interne le nombre de références d'un objet, c'est-à-dire un nombre de références. Lorsqu'un objet est créé, un nombre de références est créé. . Lorsqu'un objet n'est plus nécessaire et que son nombre de références atteint 0, il est récupéré.
Pour résumer, le nombre de références d'un objet sera augmenté de 1 dans les situations suivantes :
L'objet est créé : x=4
.2. De plus, d'autres sont créés : y=x
3 Passé en paramètres à la fonction : foo(x)
4. =[1,x,'33']
Réduction du nombre de références
1. Une référence locale sort de sa portée. Par exemple, lorsque la fonction foo(x) ci-dessus se termine, la référence d'objet pointée par x est décrémentée de 1.
2. L'alias de l'objet est explicitement détruit : del x; ou del y
3. Un alias de l'objet est attribué à un autre objet : x=789
4. L'objet est supprimé d'un objet fenêtre : myList.remove(x) 5. L'objet fenêtre lui-même est détruit : del myList, ou l'objet fenêtre lui-même quitte la portée.Garbage Collection
Mécanisme de pool de mémoire
Python fournit un mécanisme de récupération de place pour la mémoire, mais il place la mémoire inutilisée dans le pool de mémoire au lieu de la renvoyer au système d'exploitation. Tous les objets de taille inférieure à 256 octets en Python utilisent l'allocateur implémenté par pymalloc, tandis que les objets volumineux utilisent le malloc du système. De plus, les objets Python, tels que les entiers, les nombres à virgule flottante et les listes, disposent de leurs propres pools de mémoire privés indépendants, et leurs pools de mémoire ne sont pas partagés entre les objets. Cela signifie que si vous allouez et libérez un grand nombre d'entiers, la mémoire utilisée pour mettre en cache ces entiers ne pourra plus être allouée aux nombres à virgule flottante.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!