【发布时间】:2019-09-26 09:20:24
【问题描述】:
我正在尝试使用下面的代码 sn-p 在 JavaScript 中分配内存以研究内存泄漏/消耗。不过
performance.memory.usedJSHeapSize
总是显示相同的数字,在我的例子中是 10000000。尽管动态创建元素并附加到 DOM,为什么这个数字永远不会改变?
我需要一个 JavaScript sn-p 来创建内存泄漏并使用 performance.memory.usedJSHeapSize 动态监控使用情况(或任何其他函数,如果存在)。
我尝试了这段代码,但 performance.memory.usedJSHeapSize 仍为 10000000:
<body>
<p id="memory" style="position: fixed; top:10px; left:10px"></p>
<script>
setInterval(() => {
document.getElementById("memory").innerHTML = performance.memory.usedJSHeapSize
}, 300);
btn = [];
let i = 0;
setInterval(() => {
for (let j = 0; j < 1000; j++) {
++i;
let k=i;
btn[k] = document.createElement("BUTTON");
document.body.appendChild(btn[k]);
btn[k].innerHTML = k;
btn[k].addEventListener("click", function () {
alert(k);
});
}
}, 5000);
</script>
</body>
我已经厌倦了这篇文章中 2013 年给出的示例,但是这个也不再造成内存泄漏。
【问题讨论】:
-
我的猜测是您创建的元素太少而无法真正影响到堆。 1000 个 dom 元素和函数对象每 5 秒关闭一个整数?没什么。尝试分配用随机值填充的大型数组并将它们存储在这些按钮中。
-
没有帮助。你能提供一个可行的例子吗?