¿Cuál es el mecanismo de gestión de memoria de Python?
En pocas palabras: recuento de referencias, marcado de autorización y recolección generacional (recomendado: videotutorial de Python)
Recolección de basura en Python (3 tipos)
Referencia Contando
Cuando el contador de referencia de un objeto llega a 0, es posible que el objeto todavía esté en la memoria pero ya no sea accesible. Si Python solo recopila un objeto cuando su contador de referencia se vuelve 0, entonces la eficiencia de Python obviamente será muy baja. Entonces, ¿cuándo lo recopilará Python? Ésta es una muy buena pregunta.
Python monitoreará cuántos objetos nuevos ha agregado y cuántos contadores de referencia de objetos se han vuelto 0, y comparará la diferencia entre estos dos valores con el umbral cuando sea mayor que el. umbral, la memoria comienza a ser basura Recicla y destruye objetos con contadores de referencia de 0.
Ventajas: simple y en tiempo real, desventajas: mantener el recuento de referencias consume recursos y referencias circulares.
Reciclaje infantil
Para mejorar la eficiencia, hay muchos objetos que aún existen después de haber sido limpiados muchas veces. Se puede decir que dichos objetos no necesitan reciclarse con frecuencia y. Se puede subdividir en diferentes Colecciones, el intervalo de reciclaje de cada colección es diferente. En pocas palabras, esta es la colección generacional de Python.
Específicamente, la basura en Python se divide en las generaciones 1, 2 y 3. Los objetos en la generación 1 se limpiarán cada vez que se reciclen cuando la referencia al objeto todavía esté allí después de la limpieza. time Ingresará a la colección de segunda generación. De manera similar, los objetos que existen después de que se limpie la colección de segunda generación también ingresarán a la colección de segunda generación.
¿Cómo asignar el tiempo de limpieza de cada recolección? La basura de 1.ª generación se limpiará primero cuando la basura de 1.ª generación se limpie 10 veces, la basura de 2.ª generación se limpiará una vez. Se limpia 10 veces, la basura de segunda generación se limpia una vez.
Marcar y borrar
Asigne según demanda, cuando la memoria sea insuficiente, atraviese objetos desde registros y referencias en la pila del programa, marque los objetos atravesados y luego borre los objetos no marcados en la memoria.
Para obtener más artículos técnicos relacionados con Python, visite la sección de tutoriales de Python para aprender.