Как я могу программно получить использование памяти (JS и общий) моего сайта в Google Chrome?
Я просмотрел это из расширения Chrome, используя недокументированный HeapProfiler (см. здесь), но я не могу найти способ получить данные от этого.
Я хочу измерить потребление памяти в каждой версии, поэтому это должно быть программным.
EDIT: Я понял, как заставить метод HeapProfiler работать. Каждое событие addHeapSnapshotChunk
имеет кусок объекта JSON.
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 имеет узлы, ребра и описательные метаданные о node, а также типы и поля ребер.
В качестве альтернативы я мог бы использовать Timeline, если мне просто нужны итоги.
Тем не менее, есть ли лучшие способы, чем то, что я узнал здесь?