我的网站是标准的电商网站,不是JS支持的独立应用程序,只是一个使用JS执行标准操作和一些jquery插件做一些事情的网站。
我正在尝试对我的网站进行一些JS内存评估。通过查看Chrome任务管理器和堆快照来完成这个任务。
最初,第一次加载我的网站,在任务管理器上占用35MB(即35,000K)到40MB的空间。这是任何标签页中最大的占用内存,如果我同时打开了其他网站的多个标签页。 如果我刷新页面,它会跳到55-60,再次刷新则会跳到65-70MB。
在工作流程的普通页面上,它在45-65之间波动(有时根据您所做的内容达到75)。点击页面并从一个页面到另一个页面执行工作流程会使内存跳至85-100,并随着您继续浏览网站而增加。
我尝试过一些事情,如检查:
- 分离的节点
- 堆快照并查看差异
- Amix的MemoryLeakChecker检查对象的大小
我需要更深入地查找循环引用或闭包问题。
堆快照没有显示很多信息。大部分顶部列表是(array),(string),(system)。快照大小在4.8MB,5.1MB,5.8MB,6.8MB之间并且不断增加。
我有几个问题:
如何理解堆快照内存和任务管理器内存之间的不同指标?
除了Google Developers网站上的教程外,还有哪些好的教程?
多少内存被认为是可接受的?考虑到在任务管理器中,我的网站始终是占用最高内存的?
我是否有内存泄漏?除了我上面描述的步骤(我没有找到任何确定的结果),还有其他方法可以查找泄漏吗?
除了Chrome Dev Tools,你能推荐其他工具吗?(许多在谷歌上针对Firefox提到的工具都不兼容最新版本,例如:Leak Monitor for FF)
顺便说一句,我的大部分功能都是低调操作,不超过200ms(基于CPU分析)。我应该追求什么样的良好基准?200ms算高吗?