在_.bind期间lodash.js中可能发生内存泄漏

时间:2014-05-10 12:12:42

标签: javascript memory-leaks underscore.js bind lodash

我创建了一个非常简单的空网页,其中只有lodash库的链接 然后(直接在Chrome控制台中)我创建了一个简单的类:

window.class = function() {
    this.bound = _.bind(this.toBind, this);
}
window.class.prototype.toBind = function() {
    this.value = 'value';
}

此类的实例只有1个属性value和2个方法:toBindboundtoBind的绑定版本)。
然后我通过Chrome开发工具栏 - Snapshot1 - 获取堆快照 - 这是堆的初始状态 然后我创建一个class的实例并删除它:

window.obj = new window.class()
window.obj = null;
delete window.obj;

最后我拍了另一张快照 我希望obj实例不再存在,因为没有更多的引用(唯一的一个是window.obj,但在最后一步它已被删除)。但是两个堆快照的比较显示对象仍然存在似乎lodash本身引用它(在Chrome 34.0.1847.131中测试)。

enter image description here

有人可以解释这是否是lodash中真正的内存泄漏?或者这种行为有任何秘密含义吗? 注意:原生bind正常工作 非常感谢!

1 个答案:

答案 0 :(得分:3)

这是lodash中的一个错误。将在2.4.1旁边的版本中修复。
错误追踪ticket。已修复commit