如何使用 devtool 检查 javascript 运行 的内存泄漏
How to check memory leakage of javascript running as devtool
有很多关于如何检查某些页面内的 javascript 内存 运行 的信息,但我需要检查通过控制台输入的 javascript 的内存使用情况。
我正在开发一些脚本来像游戏助手一样像机器人一样工作,所以我将我的脚本放在线程(框架)下并由每秒调用 setInterval 触发。示例代码如下:
var msgList = [];
var msgGenerator = function () {
return "Welcome";
}
var msgInterval = setInterval(function () {
var msg = msgGenerator();
if (!msgList.includes(msg))
msgList.push(msg);
}, 1 * 1000);
其实message很小,加起来不到50条。但是这样的devtool(从chrome的task manager看)的内存越来越大。
即使在我执行以下调用之后:
clearInterval(msgInterval);
devtool 的内存还在增加。
谁能指导我如何获取 devtool 的内存快照(javascript 运行 在控制台上)?或者有没有其他方法可以在console上分析自制javascript运行的内存泄漏?
我尝试了很多方法来获取devtool的详细内存使用情况但都失败了。好像没有这个tool/facility。不管怎样,如果以后有人找到这样的工具,请在这个帖子中post。
但是,我找到了避免我的脚本内存使用量增加的方法 运行 在控制台上:将 setInterval 更改为 setTimeout,并达到相同的效果。
更新后的代码不会再增加内存占用。
var msgList = [];
var msgGenerator = function () {
return "Welcome";
}
var msgInterval = 0;
var msgLoop = function () {
var msg = msgGenerator();
if (!msgList.includes(msg))
msgList.push(msg);
msgInterval = setTimeout(msgLoop, 1 * 1000);
};
希望以上消息可以帮助正在努力解决 "memory leakage" 控制台脚本或片段的人。
有很多关于如何检查某些页面内的 javascript 内存 运行 的信息,但我需要检查通过控制台输入的 javascript 的内存使用情况。
我正在开发一些脚本来像游戏助手一样像机器人一样工作,所以我将我的脚本放在线程(框架)下并由每秒调用 setInterval 触发。示例代码如下:
var msgList = [];
var msgGenerator = function () {
return "Welcome";
}
var msgInterval = setInterval(function () {
var msg = msgGenerator();
if (!msgList.includes(msg))
msgList.push(msg);
}, 1 * 1000);
其实message很小,加起来不到50条。但是这样的devtool(从chrome的task manager看)的内存越来越大。 即使在我执行以下调用之后: clearInterval(msgInterval); devtool 的内存还在增加。 谁能指导我如何获取 devtool 的内存快照(javascript 运行 在控制台上)?或者有没有其他方法可以在console上分析自制javascript运行的内存泄漏?
我尝试了很多方法来获取devtool的详细内存使用情况但都失败了。好像没有这个tool/facility。不管怎样,如果以后有人找到这样的工具,请在这个帖子中post。
但是,我找到了避免我的脚本内存使用量增加的方法 运行 在控制台上:将 setInterval 更改为 setTimeout,并达到相同的效果。
更新后的代码不会再增加内存占用。
var msgList = [];
var msgGenerator = function () {
return "Welcome";
}
var msgInterval = 0;
var msgLoop = function () {
var msg = msgGenerator();
if (!msgList.includes(msg))
msgList.push(msg);
msgInterval = setTimeout(msgLoop, 1 * 1000);
};
希望以上消息可以帮助正在努力解决 "memory leakage" 控制台脚本或片段的人。