habilitar gratis enable desactivar como chrome celular activar javascript performance google-chrome google-chrome-devtools memory-profiling

javascript - gratis - js heap



Obtenga programáticamente el uso de memoria en Chrome (4)

El canal de desarrollo de Chrome tiene un proceso de api, chrome.process. Puede consultarla para obtener información sobre el proceso de una pestaña, que incluye todo tipo de información de memoria. http://developer.chrome.com/extensions/processes.html

¿Cómo puedo obtener el uso de memoria (JS y total) programáticamente de mi sitio web en Google Chrome?

Miré cómo hacerlo desde una extensión de Chrome usando el HeapProfiler no documentado (ver here ), pero no puedo encontrar una manera de obtener datos de eso.

Quiero medir el consumo de memoria en cada versión, por lo que esto debe ser programático.

EDITAR: Descubrí cómo hacer funcionar el método HeapProfiler. Cada evento addHeapSnapshotChunk tiene una parte de un objeto 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''); }); }); });

Cuando se analiza, el JSON tiene nodos, bordes y metadatos descriptivos sobre los tipos y campos de nodo y borde.

Alternativamente, podría usar los eventos de la Timeline si solo quiero totales.

Dicho esto, ¿hay formas mejores que las que he encontrado aquí?



Para cualquier persona que encuentre esto en el futuro, desde la versión 20 Chrome es compatible con window.performance.memory , que devuelve algo como:

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


Un enfoque alternativo: escriba un raspador de página web que apunte a esta URL:

cromo: // sistema /

(nota: en caso de que esta URL vuelva a cambiar, esta es la URL ''maestra'' que lista todas las páginas de diagnóstico de Chrome: chrome: // chrome-urls /

La página tiene una sección ''mem_usage'' que da detalles del uso de la memoria.

tal vez haya alguna forma de crear una secuencia de comandos de Chrome como usuario (digamos en AutoIT o Python?) que carga esta URL en Chrome, y luego presiona el botón Actualizar, y luego analiza el JSON para obtener el uso de memoria para las pestañas en las que esté interesado .

OTROS enfoques:

  • de JavaScript - use window.performance

  • desde JavaScript - use browser-report.js -

https://www.npmjs.com/package/browser-report