我是dojo的新手,目前在重大内存泄漏方面存在一些问题。由于我读到JavaScript垃圾收集器可能存在未被销毁的dijit问题,我正在努力解决这个问题,但是并没有太成功。
首先,当我离开页面时,我正试图摆脱所有小部件:
dojo.addOnWindowUnload(function(){
dijit.registry.forEach(function(widget){
widget.destroy();
});
});
这似乎有点帮助,但没有我想象的那么多。所以在某些阶段我打电话:
dojo.forEach(dijit.findWidgets(node), function(widget){
widget.destroyRecursive();
});
但是我仍然在某种程度上因dijit而导致内存泄漏。有什么一般的提示和最佳实践如何摆脱这样的?或者上面的调用是否能够处理所有事情,我必须在其他地方寻找泄漏?嗯,我知道这是一个相当普遍的问题,但我希望你能给我一些提示。
谢谢!
答案 0 :(得分:0)
您自己不应该这样做 - 请参阅http://trac.dojotoolkit.org/browser/tags/release-1.5.0/dijit/_base/manager.js#L293。
如果您在销毁页面或标签后出现内存泄漏,那么它很可能是Dijit中的一个错误。请制作一个最小的测试用例,并将一张票提交给trac,或者将其粘贴到此处,然后我会看一看并将其传递给可能提供帮助的人。