Node 的垃圾回收
使用 fs.createWriteStream 创建一个 Write Stream,当此 Write Stream 不需要的时候,我要主动调用 end() 方法吗?如果我不调用 end 方法,在此 Write Stream 被垃圾回收以后会不会关闭其相关的文件描述符?
var f = fs.createWriteStream('test.txt');
f = undefined; // f 被垃圾回收后,对应的文件描述符会被关闭吗?
另外,一个相关的问题。在 Lua 语言中,类似的问题,例如一个对象关联到了一个文件(或各种句柄等),很可能我们需要对象被销毁时相关的文件也要被关闭。Lua 提供了一个 __gc 方法,此方法在垃圾回收时被调用,程序员可以在此方法中编写回收非内存资源的代码。v8 是否有对应的功能。换而言之,使用 Node 的时候,是不是非内存资源都需要程序员显示释放?
1 回复
印象中FD能够被GC管理,BUFFER和FD都不算在V8内存中,但被GC所管理