In holy wars about whether garbage collection is a good thing, people often point out that it doesn’t handle things like freeing file handles. Putting this logic in a finalizer is considered a bad thing because the resource then gets freed non-deterministically. However, it seems like an easy solution would be for the OS to just make sure lots and lots of file handles are available so that they are a cheap and plentiful resource and you can afford to waste a few at any given time. Why is this not done in practice?
In holy wars about whether garbage collection is a good thing, people often point
Share
Closing a file also flushes the writes to disk — well, from the point of view of your application anyway. After closing a file, the application can crash, as long as the system itself doesn’t crash the changes will not be lost. So it’s not a good idea to let the GC close files at its leisure. Even if it may be technically possible nowadays.
Also, to tell the truth, old habits die hard. File handles used to be expensive and are still probably considered as such for historical reasons.