首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在javascript中释放XMLHttpRequest的内存?

如何在javascript中释放XMLHttpRequest的内存?
EN

Stack Overflow用户
提问于 2018-08-16 14:24:55
回答 2查看 424关注 0票数 0

我正在使用XMLHttpRequest下载大小为750mb的文件作为数组缓冲区。问题在于,在下载文件之后,即使在删除XMLHttpRequest对象之后,存储器也不会释放给os。我的示例代码是

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html>
<body>

<div id="demo">
<button type="button" onclick="loadXMLDoc()">load the file</button>
<button type="button" onclick="clear()">clear</button>
</div>

<script>
var xhttp = null;
function loadXMLDoc() {
    if(xhttp == null)
        xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      console.log(xhttp.response);
      delete xhttp;
      xhttp = null;

    }
  };
    xhttp.open("GET", "http://192.168.1.104/gltf/bmw/buffer.bin", true); //buffer.bin is 750 mb

    xhttp.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
    xhttp.responseType = 'arraybuffer';
    xhttp.send();
}

function clear()
{
    delete xhttp;
    xhttp = null;


}

</script>

</body>
</html>

1)这是删除XMLHttpRequest对象的正确方法吗? 2)如何使XMLHttpRequest将内存释放回操作系统?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2018-08-16 14:42:07

不完全同意。delete <variable name>甚至看起来令人困惑(我很惊讶它能正常工作而不抛出错误)。总的来说,<variable> = null是正确的方法。但在你的情况下,这应该不会有什么不同。

JS实现了自己的memory management。一旦其他人不使用相关变量,垃圾回收器就会释放内存。

问题是Garabge收集器没有连续运行。更确切地说,它是经常被称为。尝试单击开发人员工具中的“收集垃圾”按钮。这将立即调用GC。

这不是一种解决方案,而是一种调查内存是否可以释放的方法,因为从某个地方引用了您的数据。

票数 0
EN

Stack Overflow用户

发布于 2018-08-16 17:43:20

我发现问题出在" console.log ()".If上,我注释掉了console.log行,然后内存被释放回操作系统。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51870795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档