IE内存管理和javascript的有趣观察
在windows中,当应用程序最小化时,操作系统通过将数据放在页面文件中释放与应用程序相关的内存。也可以执行其他垃圾收集 在internet explorer运行我的javascript应用程序的情况下,我发现如果内存使用从60mb开始,那么最小化浏览器会将内存减少到17mb。然后,最大化将其恢复到40mb 20mb增益 我的应用程序大量使用javascript,我怀疑IE正在强制使用不再引用的对象的garabage集合 通过javascript(仅IE),您可以通过以下方式强制垃圾收集:IE内存管理和javascript的有趣观察,javascript,memory,explorer,Javascript,Memory,Explorer,在windows中,当应用程序最小化时,操作系统通过将数据放在页面文件中释放与应用程序相关的内存。也可以执行其他垃圾收集 在internet explorer运行我的javascript应用程序的情况下,我发现如果内存使用从60mb开始,那么最小化浏览器会将内存减少到17mb。然后,最大化将其恢复到40mb 20mb增益 我的应用程序大量使用javascript,我怀疑IE正在强制使用不再引用的对象的garabage集合 通过javascript(仅IE),您可以通过以下方式强制垃圾收集: Co
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'
将删除引用。假设这是唯一的参考,你已经尽了最大的努力来影响下一次扫描期间释放的内存。你的应用程序是否有可能使用任何特定的库或框架?