¿La recolección de basura en el lenguaje de programación se utiliza para recolectar memoria dinámica y nada más?

¿La recolección de basura en el lenguaje de programación se utiliza para recolectar memoria dinámica y nada más?

¿La recolección de basura para reciclar objetos que ya no se usa es para desasignar memoria del montón? ¿La pérdida de memoria representa que no hay suficiente espacio de memoria dinámica para que se ejecute el programa? Entonces, ¿lo que normalmente decimos "sin memoria" se refiere a "memoria sin tiempo de ejecución", que es "memoria de montón"?

Respuesta1

La recolección de basura generalmente se refiere a la memoria del montón.

Tenga en cuenta que las pérdidas de memoria y los errores de falta de memoria no son sinónimos. Una pérdida de memoria es una situación en la que una parte de la memoria asignada (por ejemplo, un objeto en un lenguaje OO) ya no es necesaria, pero por alguna razón no se puede desasignar/recopilar (por ejemplo, el programador olvidó borrar alguna referencia a ella).
Puede tener una pérdida de memoria que no cause un error de falta de memoria (si la pérdida es lo suficientemente pequeña) y puede obtener dicho error sin tener una pérdida de memoria (si intenta legítimamente asignar más memoria de la que está disponible para el proceso). ).

información relacionada