JavaScript内存如何在浏览器中运行?

Jen*_*ens 8 javascript memory optimization

在构建高级JS接口和游戏时,我发现我必须深入研究浏览器如何为JS处理内存.我在内存和JavaScript方面的经验是,在以下情况下,内存会被记录(并使动画和计算变慢/滞后):

  • 页面上有很多JS生成的内容
  • 页面上有很多图形(img-elements)?

因此,我得出结论,如果我想保持记忆新鲜,我应该从文档的开头包含尽可能多的HTML代码,因为它将被缓存而不是保存在内存中.当然,删除所有当前未使用的元素.

有没有人有这方面的更多信息?资源?链接?

Joe*_*hts 7

要注意的一些事项:

  • IE被DOM复杂性杀死.元素越多,页面的一部分就越慢.我看到页面显着减慢,只有3000个元素(如果你有一个10列100行的网格,那就是1000个元素).正确的方法通常是从DOM中卸载隐藏的部分(分离它们)
  • IE也有很长的历史,如果他们附加了javascript处理程序,就无法正确释放HTML元素.如果您有一个经常刷新的长期页面,请阅读IE内存泄漏,以及如何解决这些问题.
  • 所有浏览器都将未压缩的图像存储在内存中.所以,如果你在后台预装了大量的大图像,那通常是一个坏主意.
  • 更新DOM属性将导致页面重排,在复杂页面上可能需要很长时间.有时即使获取DOM属性(例如offsetHeight)也会非常慢.

通常,javascript本身不是性能瓶颈.杀死它的是与DOM的交互.不接触DOM的代码很少出现性能问题.这里只有一些经验法则:尽可能少地与DOM交互,尽可能降低DOM复杂度,避免重复页面重排.