【发布时间】:2014-07-15 11:19:19
【问题描述】:
我从一个大型 java 脚本应用程序中的内存泄漏调查开始,该应用程序作为一个小部件在基于 webkit 和 sfx(java 脚本核心引擎)的浏览器中运行。过了一会儿,我发现记忆的来源随着时间的推移而增加。恰好是$.ajax(..)。
好的,我想,让我们尝试不同版本的jquery 或直接使用XMLHttpRequest - 结果相同。然后我在谷歌浏览器上检查它并感到惊讶,因为堆分析器既没有显示 js 对象数量的增加也没有显示堆大小的增加,而 chrome 任务管理器显示内存和私有内存的增加。我测试的代码如下:
var Main = {};
var xhr = new XMLHttpRequest();
function makeRequest() {
xhr.timeout = 2000;
xhr.ontimeout = function() {
xhr.abort();
}
xhr.onreadystatechange = function() {
if (xhr.readyState != 4) return;
};
xhr.open("POST", "", true); //async post request to local server
xhr.send("{}");
}
Main.onLoad = function()
{
setInterval(function() { makeRequest(); }, 3000);
}
那么,这种行为可以吗?这不是原生内存泄漏的迹象吗?
附:我在 windows 7 企业版上使用 chrome 版本 35.0.1916.153。
【问题讨论】:
标签: javascript google-chrome-devtools