浏览器刷新不做垃圾收集

时间:2012-07-01 23:39:09

标签: javascript dom memory-leaks webgl page-refresh

我在所有测试的浏览器上找到了这个 - 在Apple上的Window sand Safari上的IE,Firefox,Chrome和Safari。

据称,浏览器刷新,后退按钮或前向链接应该转储浏览器节点和javascript变量和对象等。这似乎不是WebGL的情况。我在开发一个需要大约100MB到200MB内存的复杂WebGL应用程序时首先注意到它。在开发过程中,我必须进行大量的刷新,并且在5-10次刷新后我的计算机将开始减速并冻结。

经过一番研究后,我意识到这不应该。内存泄漏所接受的解决方案是刷新应该释放所有javascript对象和变量以及dom节点的页面。但请看下面的图片:

那么这里的交易是什么?在小型应用程序上它没有被注意到,但是对于像我这样的大型WebGL应用程序(orbitingeden.com)来说,这是一个真正的问题,我的用户会认为该软件比实际上更加耗费资源。下图显示了这些刷新吞噬了所有可用内存,因此垃圾收集无法正常工作和/或JS和DOM对象未被释放:

http://orbitingeden.com/images/big_memory_after.png

有人知道强制浏览器执行真正的内存转储的技巧吗?为什么所有文件都错了?

1 个答案:

答案 0 :(得分:2)

垃圾收集的一个要点是,对象立即清理它们未被使用。垃圾收集器可以确定何时最方便进行收集。

垃圾收集系统是正常的,只要有足够的内存可供使用,就可以在堆中留下一些未使用的对象。由于拥有大量未使用的内存,计算机运行速度不会更快。