javascript - XMLHttpRequest send() 方法上的内存泄漏
问题描述
我正在尝试将带有 XMLHttpRequest 的文件发送到 Flask 服务器。基本上这就是我所做的:
<!-- this is the HTML input element -->
<input name="file" type="file" onchange="sendBlob(this.files[0])" multiple>
function sendBlob(file)
{
var chunkSize = 500000000; // 500 MB
var xhr = new XMLHttpRequest();
var blob = file.slice(0, chunkSize, "application/octet-stream");
xhr.open("POST", "http://127.0.0.1:5000/api/get_layout/");
xhr.onreadystatechange = function()
{
if (this.readyState == 4 && this.status == 200)
console.log("blob successfully sent.");
}
xhr.setRequestHeader("Content-Type", "application/octet-stream");
xhr.setRequestHeader("X-Content-Name", "blob");
xhr.send(blob);
}
这个函数实际上有效并且成功地将文件发送到服务器,但是它增加了 RAM 内存而不释放它。特别是,它正好增长了 500 MB,这是我发送的 blob 的大小。
问题可能是什么?我已经知道 Javascript 有一个垃圾收集器,但它似乎在请求完成后不会收集 xhr 对象(即服务器返回 200 状态代码)。
如果我在这个过程之后关闭我的网络浏览器,内存就会被释放。我不明白为什么会这样。
谢谢
解决方案
推荐阅读
- symfony - Symfony Messenger - 检查队列是否为空
- javascript - 如何在单击按钮时从多个 v-text-fields 中清除数据?
- python-3.x - 如何在 Python 中查找给定时间范围内的所有记录(表单列表)?
- android - 向特定国家/地区提供应用更新
- c# - 如何获取以 ^ 开头和结尾的单词
- flutter - 使用单独的背景颜色自定义颤振导航栏/标签栏
- php - 成功更新后`缺少必需参数:id`
- sql - 无法访问 azure sql 数据库中的临时表
- apache - 使用 mod_geoip2 基于 apache 2 服务器上的地理位置重定向 url
- python - 如何在 tkinter 中清除整个屏幕并在单击菜单栏项时获取新数据