Общеизвестно, что в большинстве языков программирования поток для работы с файлами открыт-закрывается. Тем не менее, я видел много раз в рубиновых кодах непревзойденные вызовы File.open, и более того, я нашел этот камень знаний в документах ruby:
Потоки ввода/вывода автоматически закрываются, когда они утверждаются сборщиком мусора.
darkredandyellow дружественный irc возьмется за проблему:
[17:12] да, а также количество файловых дескрипторов обычно ограничено ОС
[17:29] Я предполагаю, что вы можете легко исчерпать доступные дескрипторы файлов, прежде чем сборщик мусора очистится. в этом случае вы можете использовать их сами. "заявленный сборщиком мусора". означает, что ГК действует в какой-то момент в будущем. и это дорого. много причин для явного закрытия файлов.
- Нужно ли явно закрывать
- Если да, то почему GC автоклинирует?
- Если нет, то почему опция?