Mik*_*tti 3 javascript events node.js eventemitter retain-cycle
我不太熟悉Node.js中的保留周期来自Objective-C/iOS,但是我写了一些代码,我希望这些代码不会导致保留周期.我不确定V8如何智能地处理垃圾收集或者我应该对此有多聪明!
在我的示例中,我创建了一个对象,该对象应该处理数据连接并将该数据反馈给父对象.为此,我使用EventEmitter .on函数来注册父对象函数.处理完所有数据后,父对象会被释放,但之后会在父对象和子对象之间创建一个保留周期吗?示例代码
// Create the SonarData with the necessary information
this.sonardata = new SonarData( this.key, this.size )
// Hook events
.on( 'error', this.handleError.bind( this ) )
.on( 'done', this.handleDone.bind( this ) )
.on( 'data', this.handleData.bind( this ) );
Run Code Online (Sandbox Code Playgroud)
释放父对象时,如果没有对子对象的其他引用,并且子对象上没有活动的消息处理程序,则子对象将被垃圾收集得很好.Javascript垃圾收集器没有保留周期的问题.它们的工作原理是代码是否仍可由任何其他活动代码访问.
因此,两个对象彼此相互引用,但其他代码都无法访问这两个对象将成功进行垃圾回收.