Colección de citas famosas - Diccionario de frases chinas - ¿Cuál es el mecanismo de gestión de memoria de Python?

¿Cuál es el mecanismo de gestión de memoria de Python?

La gestión de la memoria del lenguaje es un aspecto importante del diseño del lenguaje. Es un factor importante para determinar el rendimiento lingüístico. La gestión manual de C y la recolección de basura de Java se han convertido en las características más importantes del lenguaje. Este artículo toma el lenguaje Python como ejemplo para ilustrar el modelo de gestión de memoria de tipos dinámicos y lenguajes orientados a objetos.

Para resumir en una oración: se utiliza principalmente el recuento de referencias, se complementa la eliminación de marcas y se complementa el reciclaje generacional (aprendizaje recomendado: video tutorial de Python)

Recolección de basura de Python (3 tipos) )

p>

Conteo de referencias

Cuando el contador de referencias de un objeto llega a 0, el objeto puede estar en la memoria pero ya no es accesible. Python no puede realizar otras operaciones mientras recolecta basura. Si Python recopila un objeto cuando su recuento de referencias llega a 0, es obvio que la eficiencia de Python será muy pobre. ¿Cuándo se recopilará Python? Ésta es una buena pregunta.

Python controlará cuántos objetos nuevos ha creado y cuántos contadores de referencia de objetos han llegado a 0. Si la diferencia entre los dos valores es mayor que el umbral, la memoria iniciará la recolección de basura y destruirá el objeto con un contador de referencia de 0.

Ventajas: simple y en tiempo real, desventajas: mantener ciclos de conteo de referencias consume recursos y referencias.

Reciclaje de generación de energía

Para mejorar la eficiencia, muchos objetos aún existen después de haber sido limpiados muchas veces. Se puede considerar que dichos objetos no necesitan reciclarse con frecuencia y se pueden dividir en diferentes colecciones, con diferentes intervalos de reciclaje para cada colección. En pocas palabras, este es el reciclaje intergeneracional de Python.

Específicamente, la basura en Python se divide en generaciones 1, 2 y 3. Los objetos de la generación 1 se limpian cada vez que se reciclan. Cuando el objeto al que se hace referencia todavía existe después de la limpieza, ingresará a la colección de segunda generación. Del mismo modo, cuando se limpia una colección de segunda generación, los objetos existentes pasarán a la colección de segunda generación.

¿Cómo asignar el tiempo de limpieza para cada recolección? Limpiar la basura de la primera generación primero, limpiar la basura de la segunda generación después de 10 generaciones y limpiar la basura de la segunda generación después de 10 generaciones. generaciones.

Eliminación de marcas

Asignar según demanda Cuando la memoria no es suficiente, comience desde el registro y la referencia en la pila del programa, atraviese el objeto, marque el objeto atravesado y luego. borrar la memoria Objetos no marcados en .

Para obtener más artículos técnicos relacionados con Python, visite la sección de tutoriales de Python para aprender.