javascript - blob 垃圾收集问题

标签 javascript jquery html garbage-collection

我正在尝试使用kartik@的html5文件输入功能上传大量图像。我希望最终用户在上传之前不必调整图像大小,因此我使用resizeImage 选项@。我在上传大文件(每个 3-4MB)时遇到问题。

我已经修改了 fileinput.js 以用调整大小的 blob 替换预览图像,但是我的浏览器 (Chrome 48.0.2564.103 m) 仍然在 F12 -> 资源 -> ... - 中列出原始(大文件大小)blob > 图像文件夹。当上传数百张图片时,浏览器最终会耗尽内存并崩溃。

我在 fileinput.js 的“self”对象中找不到对原始/大 blob 的任何引用,因此我不知道如何收集这个未使用的 blob 垃圾。

jsfiddle of issue/link to modified fileinput.js (修改:2396-2412)

                   setTimeout(function(d) {
                    console.log('attempting to replace original blob with:');
                    console.log(blob);
                    console.log(objUrl.createObjectURL(blob));
                    console.log('attempting to revoke original blob: ' + image.src);
                    objUrl.revokeObjectURL(image.src);
                    delete image.src;
                    self.clearDefaultPreview();
                    image.src = objUrl.createObjectURL(blob);
                    console.log('outputting fileinput.js self var:');
                    console.dir(JSON.stringify(self));
                    console.dir(self);

                }, 500);
            }, type, self.resizeQuality);

            console.log('current image.src blob is: ' + image.src);

@我没有发布两个以上链接的声誉,因此我在 jsfiddle 上的 javascript 框架内嵌入了插件文档的链接。

任何帮助将不胜感激。

最佳答案

我弄清楚发生了什么,文件输入脚本直到所有图像都预加载后才调整 blob 的大小。将其修改为一次处理每个图像后,我的性能在处理如此大的图像时达到了预期的效果 - 谢谢大家的评论。

关于javascript - blob 垃圾收集问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35192410/

相关文章:

javascript - 如何解决这个 ReferenceError?

jquery - 使用 jquery 发送 json 对象,但在 compojure 中接收 nil

jquery - 如果预加载了 iframe,则在具有 onclick 功能的 iframe 中应用 css 样式仅在第一次单击时有效

javascript - 多列 HTML 列表框

javascript - 用于验证 JavaScript 中的负数的正则表达式

javascript - 如何使用 javascript 将变量从 html 文件插入到 js 文件中?

javascript - 如何使按钮在 HTML 中向下滚动页面?

javascript - 如何检查HTML5音频是否达到了不同的错误

javascript - 将数组转换为 Observable<T[]> 的类型

javascript - 将回调函数传递给指令