Google Chromeでウェブサイトのメモリ使用量(JSと合計)をプログラムで取得するにはどうすればよいですか?
ドキュメント化されていないHeapProfilerを使用してChrome拡張機能からそれを行うことを検討しました( ここ を参照))、そこからデータを取得する方法を見つけることができません。
すべてのリリースでのメモリ消費を測定したいので、これはプログラムで行う必要があります。
編集: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にはノード、エッジ、ノードに関する説明メタデータ、エッジのタイプとフィールドが含まれます。
あるいは、合計だけが必要な場合は Timeline イベントを使用できます。
とはいえ、私がここで見つけた方法よりも良い方法はありますか?
将来これを見つけた人のために、バージョン20以降Chromeは window.performance.memory
をサポートし、次のようなものを返します:
{
totalJSHeapSize: 21700000,
usedJSHeapSize: 13400000,
jsHeapSizeLimit: 1620000000
}
別のアプローチ:次のURLを指すWebページスクレイパーを記述します。
chrome:// system /
(注:このURLが再度変更された場合、これはすべてのchrome診断ページをリストする「マスター」URL:chrome:// chrome-urls /
ページには、メモリ使用量の詳細を示すセクション「mem_usage」があります。
Chromeをユーザーとして(たとえば、AutoITまたはPythonで?)スクリプト化して、このURLをChromeにロードし、[更新]ボタンを押して、JSONを解析して取得する方法があるかもしれません。興味のあるタブのメモリ使用量。
その他のアプローチ:
javaScriptから-window.performanceを使用
javaScriptから-browser-report.jsを使用-
chrome devチャネルには、プロセスapi、chrome.processがあります。あらゆる種類のメモリ情報を含むタブのプロセス情報をクエリできます。 http:// developer。 chrome.com/extensions/processes.html
そのためのjsライブラリがあります: https://github.com/spite/memory-stats.js