Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IE内存管理和javascript的有趣观察_Javascript_Memory_Explorer - Fatal编程技术网

IE内存管理和javascript的有趣观察

IE内存管理和javascript的有趣观察,javascript,memory,explorer,Javascript,Memory,Explorer,在windows中,当应用程序最小化时,操作系统通过将数据放在页面文件中释放与应用程序相关的内存。也可以执行其他垃圾收集 在internet explorer运行我的javascript应用程序的情况下,我发现如果内存使用从60mb开始,那么最小化浏览器会将内存减少到17mb。然后,最大化将其恢复到40mb 20mb增益 我的应用程序大量使用javascript,我怀疑IE正在强制使用不再引用的对象的garabage集合 通过javascript(仅IE),您可以通过以下方式强制垃圾收集: Co

在windows中,当应用程序最小化时,操作系统通过将数据放在页面文件中释放与应用程序相关的内存。也可以执行其他垃圾收集

在internet explorer运行我的javascript应用程序的情况下,我发现如果内存使用从60mb开始,那么最小化浏览器会将内存减少到17mb。然后,最大化将其恢复到40mb

20mb增益

我的应用程序大量使用javascript,我怀疑IE正在强制使用不再引用的对象的garabage集合

通过javascript(仅IE),您可以通过以下方式强制垃圾收集:

CollectGarbage()
因此,如果我调用此方法(不最小化屏幕),我只回收一个或两个meg

如果我通过事件队列调用它:

setTimeout(CollectGarbage, 1000)
我收回大约3兆

我的应用程序设计为全天运行,因此内存管理非常重要

有人知道如何强迫IE像手动迷你们一样清理内存吗

以编程方式最小化浏览器的建议将被嘲笑


干杯:)

使用
delete
关键字取消定义变量/属性,节省内存

但是,如果只需要丢失对对象属性的引用,只需将其设置为
null
,然后等待下一个集合


使用闭包和lambda函数时要小心,因为它们传统上是内存占用和泄漏源。请参阅。

delete从原型中删除属性,从而删除引用。。obj.prop=null只删除引用。因此,在delete的情况下,如果要迭代objs属性,就会发现属性的数量会减少。在obj.prop=null的情况下,属性的数量保持不变。从记忆的角度来看,这两种方法之间的差异并不显著,但在语义上却大不相同。您在回答中链接的Mozilla文档明确表示,
delete
与释放内存无关……嘿@Mikeyong,感谢7年后的对抗性评论。不管怎样,我都会很友好地解释理由。是的,我知道
delete
本身不能释放内存。我知道什么是垃圾收集,它是如何工作的。我甚至会说我7年前就知道了。这个垃圾收集是我想要的。如果您有
obj['foo']=expensiveObj
,删除
'foo'
将删除引用。假设这是唯一的参考,你已经尽了最大的努力来影响下一次扫描期间释放的内存。你的应用程序是否有可能使用任何特定的库或框架?