如何避免dijit引起的内存泄漏?

时间:2011-01-13 03:59:13

标签: javascript memory-leaks dojo

我是dojo的新手,目前在重大内存泄漏方面存在一些问题。由于我读到JavaScript垃圾收集器可能存在未被销毁的dijit问题,我正在努力解决这个问题,但是并没有太成功。

首先,当我离开页面时,我正试图摆脱所有小部件:

dojo.addOnWindowUnload(function(){
    dijit.registry.forEach(function(widget){
        widget.destroy();
    });
});

这似乎有点帮助,但没有我想象的那么多。所以在某些阶段我打电话:

dojo.forEach(dijit.findWidgets(node), function(widget){
    widget.destroyRecursive();
});

但是我仍然在某种程度上因dijit而导致内存泄漏。有什么一般的提示和最佳实践如何摆脱这样的?或者上面的调用是否能够处理所有事情,我必须在其他地方寻找泄漏?嗯,我知道这是一个相当普遍的问题,但我希望你能给我一些提示。

谢谢!

1 个答案:

答案 0 :(得分:0)

您自己不应该这样做 - 请参阅http://trac.dojotoolkit.org/browser/tags/release-1.5.0/dijit/_base/manager.js#L293

如果您在销毁页面或标签后出现内存泄漏,那么它很可能是Dijit中的一个错误。请制作一个最小的测试用例,并将一张票提交给trac,或者将其粘贴到此处,然后我会看一看并将其传递给可能提供帮助的人。