Chrome';s任务管理器显示Javascript导致的内存泄漏?
我有一个web应用程序,它可以在滚动窗口时更新DOM不透明度。性能与您期望的差不多,但令人惊讶的是Chrome的任务管理器窗口(快捷方式:Chrome';s任务管理器显示Javascript导致的内存泄漏?,javascript,google-chrome,memory-leaks,google-chrome-devtools,taskmanager,Javascript,Google Chrome,Memory Leaks,Google Chrome Devtools,Taskmanager,我有一个web应用程序,它可以在滚动窗口时更新DOM不透明度。性能与您期望的差不多,但令人惊讶的是Chrome的任务管理器窗口(快捷方式:Shift+Esc)。当我滚动窗口时,内存值会无限期地上升,并且永远不会回到其原始水平。Chrome开发工具中的时间线和配置文件面板并不反映这种内存增长 我做了。确保在滚动结果窗格时打开任务管理器以查看选项卡的内存 任务管理器内存列是否受到JavaScript内存泄漏的影响,或者这超出了我的控制范围(除了不执行滚动不透明度效果) 是的,选项卡的内存会受到内存泄
Shift+Esc
)。当我滚动窗口时,内存值会无限期地上升,并且永远不会回到其原始水平。Chrome开发工具中的时间线和配置文件面板并不反映这种内存增长
我做了。确保在滚动结果窗格时打开任务管理器以查看选项卡的内存
任务管理器内存列是否受到JavaScript内存泄漏的影响,或者这超出了我的控制范围(除了不执行滚动不透明度效果)
是的,选项卡的内存会受到内存泄漏的影响,但您可能没有内存泄漏。每次滚动时,浏览器都会绘制新的平铺,直到需要时才会删除它们。你在数百(数千)兆字节之前就这么做了吗?而且,我无法在Chrome36上重现这种行为。你可以使用ChromeDev工具上的配置文件检查内存。我已经检查了你给的页面,从标签堆中没有内存泄漏。有两件事你应该考虑:首先,浏览器将触发大量的“滚动”事件。您的函数可能只需要每隔30毫秒左右响应一次。其次,在
requestAnimationFrame()
回调中进行CSS更新。这些不会对内存消耗造成太大的改变,但会对CPU更友好。