javascript - 为什么内存使用情况未正确更新?

标签 javascript google-chrome memory

警告:此代码最终将耗尽浏览器选项卡的内存并使该选项卡崩溃。

在下面的fiddle中,我设置了一个过程,该过程泄漏大量内存并连续报告正在使用多少内存。我正在使用performance.memory API,它似乎仅在chrome上实现。问题在于,尽管内存使用量正在迅速增加,但报告的数量从未改变。相反,我希望排名靠前的人数会持续增加。

这是JavaScript代码:

(function() {

var x = [];

function createSomeNodes() {
    var div,
        i = 100,
        frag = document.createDocumentFragment();
    for (;i > 0; i--) {
        div = document.createElement("div");
        div.appendChild(document.createTextNode(i + " - "+ new Date().toTimeString()));
        frag.appendChild(div);
    }
    document.getElementById("debug").appendChild(frag);
}

function clear() { document.getElementById('stats').innerHTML = ''; }

function show(stat) { 
  var div = document.getElementById('stats');
  div.appendChild(document.createTextNode(stat));
  div.appendChild(document.createElement("div"));
 }

var start = Date.now() + 2 * 1000;

function grow() {
    x.push(new Array(1000000).join('x'));
    createSomeNodes();
    setTimeout(grow,40);

if (Date.now() < start) { return; }

              (function() {
                clear();
                var pm = window.performance && window.performance.memory;
                if (!pm) {
show("no performance.memory api");
                  return;
                }
                var lim = pm.jsHeapSizeLimit, // Memory the JavaScript heap is limited to
                    // Memory allocated on the JavaScript heap (includes free space)
                    total = pm.totalJSHeapSize,
                    used = pm.usedJSHeapSize; // Memory currently being used 
                show("Crash Index (% of Heap Limit Allocated): " + Math.round(total / lim * 100));
                show("% of Allocated Memory Used: " + Math.round(used / total * 100));
              })();

}


    setTimeout(grow,1000);
})()

如果将变量start设置为更高的数字,则我称为“崩溃索引”的初始初始值会更高,但是在首次显示该值之后,即使该值也不会增加。

最佳答案

出于安全原因,有一个限制将内存采样限制为每20分钟在Google Chrome浏览器中一次。在Chrome 68+中,对于源自与网页(eTLD + 1)相同来源的脚本,该限制已减少为每50毫秒一次。这意味着您可能不再需要--enable-precise-memory-info了。

https://chromium.googlesource.com/chromium/src/+/7c7847f69de403f6c798dfccba10812039a60480

关于javascript - 为什么内存使用情况未正确更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25389096/

相关文章:

javascript - 在 Jasny Bootstrap 中使用 fileinput.js 时选择文件后自动提交表单

google-chrome - ChromeDriver 在 Jenkins Selenium 作业 : "WebDriverError: Chrome failed to start: crashed" 上不断崩溃

java - 为什么Java boolean 值必须至少为1个字节?

r - 如何在 session 结束后让 Shiny 回馈内存?

java - Android 上的性能测量

javascript - 基于回调返回 Observable

javascript - D3 - 在 SVG 组周围创建动态 "Border"矩形

javascript - 如何在不使用 chrome webstore 的情况下创建类似 facebook 的通知警报?

javascript - 卡在 postMessage 和 MessageChannel

javascript - Chrome 扩展 : Possible to Inject External JavaScript in Secured Pages?