为什么不't node.js垃圾收集系统资源(如文件句柄)
Why doesn't node.js garbage collect system resources (such as file handles)?
我在node.js上做了很多异步文件I/O工作,我突然意识到,必须非常小心地捕捉所有错误路径,以免在错误情况下意外泄露文件描述符。但是,Javascript是一种垃圾收集语言,这正是在垃圾收集环境中不应该担心的事情。
如果包含文件描述符的变量超出范围或无法从代码中访问,那么node.js垃圾收集器似乎应该知道这一点,并为您正确清理系统资源。浏览器中的Javascript对DOM对象执行此操作。如果一个DOM对象已从DOM中删除,并且保存在一个Javascript变量中,该变量随后超出范围或变得不可访问,浏览器将自动为您清理它。您不必手动删除它。因此,与非JS资源进行这种级别的集成当然是可能的。
所以,我想知道为什么node.js没有这个功能,因为它看起来非常有用,会使它成为一个更健壮的服务器开发环境?
这只是node.js处于早期开发阶段的一个例子吗?随着时间的推移,这可能是一个合乎逻辑的改进,但目前还有更重要的事情要做吗?
这是node.js与V8引擎保持一定距离,从而没有集成到垃圾收集系统句柄所需的级别吗?
是否存在一些概念上的困难,使得对文件句柄或其他类似的系统资源进行GC不切实际?
此外,来自主进程的文件描述符可以与子进程共享(参见cluster
模块),这意味着即使一个进程可以确定不再引用特定的文件描述符,不同的进程也可能有它的副本
文件描述符以这种方式可共享的要求可能是驱动文件描述符作为数字决策的原因,因为不可能在进程之间传递内部不可见的对象。
相关文章:
- 链接上的IE10 jquery句柄单击事件不起作用
- 句柄未呈现
- 当页面居中时,带有inputfield的jQuery ui滑块句柄不起作用
- Node.js REST与MySQL句柄重新连接
- Node.js正确的回调错误句柄
- jQuery UI滑块-防止多个句柄重叠
- AngularJS:自定义 404 拦截器句柄 - 带有 URL 的响应
- 缺少 Symfony2 捆绑资源文件
- 从扩展的 javascript 中获取 Firefox 浏览器窗口句柄
- 识别纯文本句子中的推特句柄
- 我可以更改CSS中文本区域调整大小句柄的设计吗
- Javascript正则表达式句柄/
- JSPM与外部系统js文件绑定
- 在窗体内部单击jQuery句柄按钮
- ES6 Promise.al()错误句柄-Is.settle()需要
- 语法错误jquery句柄json
- 带有两个句柄的 jQuery UI 滑块 - 获取初始数据
- 句柄中包含括号的问题处理属性
- 如何获取javascript文件的对象(句柄)
- 为什么不't node.js垃圾收集系统资源(如文件句柄)