浏览器刷新不做垃圾收集

Orb*_*den 9 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

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

Guf*_*ffa 2

垃圾收集的要点之一是对象不再使用时不会立即被清理。垃圾收集器可以自行确定何时最方便进行收集。

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

  • 那么我想这个问题更好:javascript 内存泄漏如何渗透到页面刷新和导航中?那是不可能的,对吧? (4认同)
  • 你找到这个问题的答案了吗?我对 webgl 和 GPU 内存也有类似的问题。每次刷新都会叠加。 (2认同)
  • @Muhammad Faizan Khan 现在对我来说似乎很好。铬 r73。另外,我注意到打开浏览器开发控制台只是乞求内存不要被释放。 (2认同)