In den meisten Programmiersprachen ist allgemein bekannt, dass der Ablauf für die Arbeit mit Dateien Open-Use-Close ist. Dennoch habe ich viele Male in Ruby-Codes unübertroffene File.open-Aufrufe gesehen, und außerdem habe ich dieses Juwel des Wissens in den Ruby-Dokumenten gefunden:
E / A-Streams werden automatisch geschlossen, wenn sie vom Garbage Collector beansprucht werden.
darkredandyellow freundliche irc nehmen das Problem auf:
[17:12] Ja, und außerdem ist die Anzahl der Dateideskriptoren normalerweise durch das Betriebssystem begrenzt.
[17:29] Ich gehe davon aus, dass Ihnen die verfügbaren Dateideskriptoren leicht ausgehen können, bevor der Garbage Collector bereinigt wird oben. In diesem Fall möchten Sie sie möglicherweise selbst schließen. "behauptet vom Müllsammler." bedeutet, dass der GC irgendwann in der Zukunft handelt. und es ist teuer. viele Gründe für das explizite Schließen von Dateien.
- Müssen wir explizit schließen?
- Wenn ja, warum schließt der GC dann automatisch?
- Wenn nicht, warum dann die Option?
$ ulimit -n => 1024
es nur dann hoch, wenn Sie nur einen einfachen Job machen. Schlechte Angewohnheit wird eines Tages ein großes Problem verursachen!