gpt4 book ai didi

memory-leaks - 如何识别、修复、关闭 Windows Sidebar 小工具中的内存泄漏?

转载 作者:行者123 更新时间:2023-12-04 07:05:09 26 4
gpt4 key购买 nike

我为 Windows Sidebar 编写了一个小工具。这实质上意味着它是一个微型网页,连续运行数月。

几周后,存放第 3 方小工具的 sidebar.exe 进程的内存使用量(工作集)达到数百兆字节。

没有办法确定内存泄漏的来源,我只是假设这是传闻中的 XMLHttpRequest 闭包问题。尽管在我的情况下,我不是异步进行的。所以我猜它只是 JAX 而不是 一个 jack 斯。

涉及网络命中的javascript函数:

function FetchXML(method, url)
{
var xmlHttp;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{ // Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
throw "XMLHttp not supported"
}
}
}

xmlHttp.open(method, url, false);
xmlHttp.send(null);
if (xmlHttp.status != 200)
{
throw "Server returned status code "+xmlHttp.status.toString();
}

if (xmlHttp.responseXML.parseError.errorCode != 0)
{
throw "Error in returned XML: "+xmlHttp.responseXML.parseError.reason;
}

var responseXML = xmlHttp.responseXML;
xmlHttp = null;
return responseXML;
}

这看起来像它可能是内存泄漏的根源吗?

我担心如果没有实际关闭,我会回到原点。

最佳答案

此外,DOM 对象和 JavaScript 对象存在于不同的内存空间中,因此如果您有循环引用,例如

表 = [];
table[0] = document.getElementById('myDiv');
table[0].ownerTable = table;

那么数组和 div 都不会被垃圾回收,即使对这两个对象的所有其他引用都超出了范围。

关于memory-leaks - 如何识别、修复、关闭 Windows Sidebar 小工具中的内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1218830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com