gpt4 book ai didi

javascript - 以编程方式获取 Chrome 中的内存使用情况

转载 作者:行者123 更新时间:2023-12-03 01:28:48 26 4
gpt4 key购买 nike

如何以编程方式获取 Google Chrome 中网站的内存使用情况(JS 和总内存使用情况)?

我考虑使用未记录的 HeapProfiler 从 Chrome 扩展程序中执行此操作(请参阅 here ),但我找不到从中获取数据的方法。

我想测量每个版本的内存消耗,因此这需要以编程方式进行。

编辑:我弄清楚了如何让 HeapProfiler 方法发挥作用。每个 addHeapSnapshotChunk 事件都有一个 JSON 对象 block 。

chrome.browserAction.onClicked.addListener(function(tab) {
var heapData,
debugId = {tabId:tab.id};
chrome.debugger.attach(debugId, '1.0', function() {
chrome.debugger.sendCommand(debugId, 'Debugger.enable', {}, function() {
function headerListener(source, name, data) {
if(source.tabId == tab.id && name == 'HeapProfiler.addProfileHeader') {
function chunkListener(source, name, data) {
if(name == 'HeapProfiler.addHeapSnapshotChunk') {
heapData += data.chunk;
} else if(name == 'HeapProfiler.finishHeapSnapshot') {
chrome.debugger.onEvent.removeListener(chunkListener);
chrome.debugger.detach(debugId);
//do something with data
console.log('Collected ' + heapData.length + ' bytes of JSON data');
}
}
chrome.debugger.onEvent.addListener(chunkListener);
chrome.debugger.sendCommand(debugId, 'HeapProfiler.getHeapSnapshot', {uid:data.header.uid, type:data.header.typeId});
}
chrome.debugger.onEvent.removeListener(headerListener);
}
chrome.debugger.onEvent.addListener(headerListener);
chrome.debugger.sendCommand(debugId, 'HeapProfiler.takeHeapSnapshot');
});
});
});

解析时,JSON 包含节点、边以及有关节点和边类型和字段的描述性元数据。

或者,我可以使用 Timeline如果我只想要总数,则发生事件。

也就是说,还有比我在这里发现的更好的方法吗?

最佳答案

对于将来发现此问题的任何人,自 Chrome 版本 20 起支持 window.performance.memory ,它返回如下内容:

{
totalJSHeapSize: 21700000,
usedJSHeapSize: 13400000,
jsHeapSizeLimit: 1620000000
}

关于javascript - 以编程方式获取 Chrome 中的内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18455644/

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