【发布时间】:2011-11-13 21:24:34
【问题描述】:
我对此进行了相当多的研究,但主要是通过将其他问题拼凑在一起,这仍然留下了一些疑问。在任何时候都不会刷新浏览器页面并且可能会存活很长一段时间(数小时)而不关闭的应用程序中(假设刷新页面或导航到另一个页面会重新启动 js 代码),确保对象的最佳方法是什么?释放并且没有内存泄漏。
这些是我关心的具体场景:
下面的所有代码都在一个显示模块模式中。
mycode = function(){}()
函数中的变量,我确定这个被 GC 收集就好了
function(){ var h = "ss";}
模块中的变量,如果不再需要 g = null 吗?
var g;
function(){ g = "dd";}
最后是 jqXHR 的生命:它返回后是否被清理干净?是否应该在所有情况下都将其设置为 null 作为预防措施,是否保留在函数或模块中?
如果这样做,x返回后是否被GC清理掉了?:
function(){
var x = $.get();
x.done = ...;
x.fail = ...;
}
这样做的时候怎么样,x返回后也会被清理掉吗?:
var x;
function(){
x = $.get();
x.done = ...;
x.fail = ...;
}
最后,有没有办法在不重启浏览器的情况下清理所有变量并重启模块?
【问题讨论】:
-
如果您正在考虑内存泄漏,则不应考虑变量。考虑对象和引用以及后者对前者的可达性影响。
-
是的,只是我将js中的所有内容都视为变量,但我明白你的意思。谢谢。
标签: javascript jquery memory-leaks