¿Cómo puedo obtener mediante programación el uso de la memoria (JS y total) de mi sitio web en Google Chrome?

Miré a hacerlo a partir de una extensión de Chrome utilizando los indocumentados HeapProfiler (ver aquí), pero no puedo encontrar una manera de obtener los datos de que.

Quiero medir el consumo de memoria en cada versión, así que esto debe ser programáticas.

EDIT: me di cuenta de cómo obtener la HeapProfiler método de trabajo. Cada addHeapSnapshotChunk evento tiene un fragmento 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 que se ha nodos, bordes, y los metadatos descriptivos sobre el nodo y los bordes de los campos y tipos.

Alternativamente, podría utilizar Línea de tiempo eventos si sólo quiero totales.

Que dijo, ¿hay alguna forma mejor de lo que me he encontrado aquí?

  • No estoy seguro de cuánto detalles que usted necesita, pero has comprobado el window.performance objeto? Se da una breve descripción general del uso de la memoria y no requiere de extensión al que se accede.
  • Tengo, específicamente window.performance.memory. No parece coincidir con el montón de perfil, aunque. Yo en realidad no necesita una gran cantidad de detalles; el uso total de memoria sería suficiente.
InformationsquelleAutor Paul Draper | 2013-08-27

4 Comentarios

  1. 21

    Para cualquier persona que encuentra esto en el futuro, desde la versión 20 de Chrome soporta de la ventana.rendimiento.memoria, que devuelve algo como:

    {
      totalJSHeapSize: 21700000,
      usedJSHeapSize: 13400000,
      jsHeapSizeLimit: 1620000000
    }
    • He estado tratando de esto, y los valores no cambian para mí, incluso antes y después de la creación de un 1.000.000 de claves/valores objeto de…
    • intente iniciar Chrome con CLI bandera –-enable-precise-memory-info.
    • Vlasov versión correcta: –enable-precisa-de memoria-info
    • Ok, esto hace el trabajo, pero usted debe asegurarse de que no chrome.exe proceso que se estaba ejecutando antes.
  2. 10

    Un enfoque alternativo:
    escribir una página web scraper apunta a esta dirección URL:

    chrome://system/

    (nota: en caso de que esta dirección cambia de nuevo, este es el ‘maestro’ de la URL que muestra todos los cromados de diagnóstico de páginas: chrome://chrome-url/

    la página tiene una sección de ‘mem_usage’, que da detalles de uso de la memoria.

    tal vez hay alguna forma de secuencia de comandos de Chrome como un usuario (es decir en AutoIT o Python?) que carga este URL en Chrome y, a continuación, pulsa el botón de Actualización y, a continuación, analiza el JSON para obtener el uso de la memoria para lo que sea pestañas usted está interesado en.


    OTROS enfoques:

    • de JavaScript de uso de la ventana.el rendimiento

    • de JavaScript – uso browser-report.js –

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

    • saludos – he actualizado el post

Dejar respuesta

Please enter your comment!
Please enter your name here