Es de conocimiento común en la mayoría de los lenguajes de programación que el flujo para trabajar con archivos es abrir-usar-cerrar. Sin embargo, vi muchas veces en códigos ruby llamadas File.open incomparables y, además, encontré esta joya de conocimiento en los documentos ruby:
Los flujos de E / S se cierran automáticamente cuando son reclamados por el recolector de basura.
irc amigable con darkredandyellow aborda el problema:
[17:12] sí, y también, el número de descriptores de archivo generalmente está limitado por el sistema operativo
[17:29] Supongo que puede quedarse sin descriptores de archivo disponibles antes de que el recolector de basura limpie arriba. en este caso, es posible que desee utilizar cerrarlos usted mismo. "Reclamado por el recolector de basura". significa que el GC actúa en algún momento en el futuro. y es caro. muchas razones para cerrar archivos explícitamente.
- ¿Necesitamos cerrar explícitamente
- En caso afirmativo, ¿por qué se cierra automáticamente el GC?
- Si no, ¿por qué la opción?