Questions tagged «resource-allocation»

6
为什么垃圾回收仅扩展到内存而不扩展到其他资源类型?
似乎人们厌倦了手动内存管理,于是他们发明了垃圾回收器,生活还算不错。但是其他所有资源类型呢?文件描述符,套接字,甚至用户创建的数据(如数据库连接)? 这听起来像是一个幼稚的问题,但是我找不到任何有人问过的地方。让我们考虑文件描述符。假设某个程序知道启动时仅允许有4000 fds。每当它执行将打开文件描述符的操作时,如果会 检查以确保它不会用完。 如果是这样,则触发垃圾回收器,这将释放一堆内存。 如果某些内存释放了对文件描述符的保留引用,请立即将其关闭。它知道该内存属于某个资源,因为与该资源绑定的内存在首次打开时就注册了一个“文件描述符注册表”,但缺乏更好的用语。 打开一个新的文件描述符,将其复制到新的内存中,将该内存位置注册到“文件描述符注册表”中,并将其返回给用户。 因此,资源不会立即被释放,但是只要gc至少在资源即将用完之前就运行,只要它没有被完全利用,它将至少被释放。 对于许多用户定义的资源清理问题而言,这似乎就足够了。我设法在这里找到一条注释,该注释在C ++中使用类似于包含对资源的引用的线程的方式进行类似于C ++的清理,并在仅剩一个引用(来自清理线程)时对其进行清理,但是我可以找不到任何证据表明这是图书馆或任何现有语言的一部分。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.