html5文件系统api - chrome在多次读写中挂起并崩溃

时间:2012-03-02 09:30:54

标签: html5 google-chrome fileapi

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

1 个答案:

答案 0 :(得分:0)

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

很可能,你的方法需要大量的JS堆内存(例如,你永远不会缓存已读取的图像,但重新读取它们会丢弃以前的数据。)V8中的多个完整GC会导致挂起,最终导致V8崩溃内存耗尽。

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