Gestion de memoria por los lenguajes de programacion

DALL-E Laptop office
Solucionex
25
Abr 24

Históricamente los lenguajes de programación han optado por dos estrategias para gestionar la memoria de las aplicaciones: Gestión manual de memoria en la que el programador tiene la total responsabilidad de reservar y liberar memoria, que es como se hace en C/C++. Recolección de basura en la que la aplicación para cada cierto tiempo y ejecuta una recolección de elementos de memoria que ya no están en uso, la mayor parte de los lenguajes de programación modernos como Java, Python o Javascript implementan esta estrategia, recientemente otra estrategia de gestión de memoria que se ha hecho bastante popular debido a Rust es una solución intermedia mediante borrow checker en la que la memoria se libera automáticamente pero en vez de hacerse mediante un colector de basura, esta liberación queda determinada por el compilador cuando la variable que posee esa información queda fuera de ámbito.

Cada una de estas estrategias tiene sus pros y contras

  • Gestión manual de memoria: No garantiza la seguridad de la memoria y la complejidad del desarrollo es bastante alta dado que hay que garantizar manualmente que no hay fugas de memoria, a cambio es la opción que más se puede optimizar.
  • Colección de basura: Hace los desarrollos mucho más sencillos ya que no hay que gestionar la memoria como contraparte la necesidad de parar la ejecución de la alicación cada cierto tiempo introduce una sobrecarga notable en el rendimiento de las aplicaciones generadas con esta estrategia.
  • Borrow checker: Garantiza la seguridad de la memoria, a cambio se tienen unos tiempos de compilación bastante más largos que cualquier otra estrategia y el desarrollo tiene la complejidad de tener que lidiar con los ciclos de vida de las variables y sus referencias.
     
Rust
Desarrollo