Cómo Python controla la memoria
Primero, el mecanismo de recuento de referencias del objeto
Segundo, el mecanismo de recolección de basura
Tercero, el mecanismo del grupo de memoria p>
En primer lugar, el mecanismo de recuento de referencias de los objetos
Python utiliza internamente el recuento de referencias para rastrear objetos en la memoria, y todos los objetos tienen un recuento de referencias.
Cuando se incrementa el recuento de referencias:
1. Asigne un nuevo nombre al objeto.
2. Ponlo en un contenedor (como una lista, tupla o diccionario).
Cuando se reduce el recuento de referencias:
1. Utilice la instrucción del para destruir la visualización del alias del objeto.
2 La referencia está fuera de alcance. o la función sys.getrefcount reasignada () puede obtener el recuento de referencia actual del objeto.
En la mayoría de los casos, el recuento de referencias es mucho mayor de lo que imagina. Para datos inmutables (como números y cadenas), el intérprete compartirá memoria entre diferentes partes del programa para ahorrar memoria.
En segundo lugar, recolección de basura
1. Cuando el recuento de referencias de un objeto llega a cero, será procesado por el mecanismo de recolección de basura.
2. Cuando dos objetos A y B se refieren entre sí, la declaración del puede disminuir los recuentos de referencias de A y B y destruir los nombres utilizados para referirse a los objetos subyacentes. Sin embargo, dado que cada objeto contiene referencias a otros objetos, el recuento de referencias no volverá a cero y el objeto no será destruido. (provocando pérdidas de memoria). Para resolver este problema, el intérprete ejecutará periódicamente un detector de bucles para buscar bucles en objetos inaccesibles y eliminarlos.
En tercer lugar, el mecanismo del grupo de memoria
Python proporciona un mecanismo de recolección de basura para la memoria, pero coloca la memoria no utilizada en el grupo de memoria en lugar de devolverla al sistema operativo.
1. Mecanismo de Pymalloc. Para acelerar la eficiencia de ejecución de Python, Python introduce un mecanismo de grupo de memoria para administrar la aplicación y liberar pequeños bloques de memoria.
2. Todos los objetos de menos de 256 bytes en Python usan el asignador implementado por pymalloc, mientras que los objetos grandes usan el malloc del sistema.
3. Los objetos de Python, como los números enteros, los números de punto flotante y las listas, tienen sus propios grupos de memoria privados y los objetos no * * * comparten sus propios grupos de memoria. Es decir, si asigna y libera una gran cantidad de números enteros, la memoria utilizada para almacenar en caché estos números enteros ya no se puede asignar a números de punto flotante.
Para obtener más conocimientos de Python, preste atención a la columna del tutorial en vídeo de Python.