1

我有一个后台线程(网络工作者)从服务器获取大量图像并将它们同步写入文件系统。同时,用户需要滚动浏览已经写入文件系统的图像。因此,每次触发滚动事件时,都会从文件系统中异步读取一个文件并显示在画布中。如果用户一次滚动浏览多个图像,则此过程会生成同时读取和写入,从而导致浏览器挂起并最终崩溃。我怎样才能在不让浏览器挂起的情况下做到这一点?

4

1 回答 1

0

请注意:这是对正在发生的事情的疯狂猜测,如果不知道您的代码实际上做了什么,就永远无法 100% 确定。

很有可能,您的方法需要大量 JS 堆内存(例如,您从不缓存已经读取的图像,而是重新读取它们丢弃以前的数据。)挂起可能是由于 V8 中的多个完整 GC 导致的,最终崩溃是由于 V8 用完记忆。

我建议您使用 Chrome 开发人员工具 ( ++)Ctrl面板Shift并在选项卡崩溃之前拍摄一些堆快照。然后您可以比较它们(底部状态栏中的正确 SELECT,选择“在 Snapshots 1 和 2 之间分配的对象”),看看这个假设是否正确。IProfiles

于 2012-03-03T09:31:51.253 回答