Tengo una aplicación web que tiene una pérdida de memoria en algún lugar y yo soy incapaz de detectar. Ya he probado las herramientas para desarrolladores de Chrome que normalmente funciona bien, pero soy incapaz de seguir la pista de las líneas de código que son responsables. El Chrome herramientas me acaba de dar demasiada información y no me pueda identificar los objetos en memoria a mi código.

Hay otras herramientas que pueden ser útiles?

InformationsquelleAutor Preli | 2012-08-15

3 Comentarios

  1. 25

    actualización:
    Permite el uso Registro de las Asignaciones del Montón tipo de perfil.

    1. abrir devtools analizador de
    2. hacer un warm-up de acción
    3. inicio del analizador de
    4. repetir la acción un par de veces
    5. si la acción tiene una fuga puede ver el mismo número de grupos de barras de color azul en el panel información general
    6. detener el perfilador
    7. seleccione un grupo de estas barras de color azul en el resumen
    8. buscar en la lista de objetos

    Ver screencast Javascript detección de Pérdida de Memoria (Chrome DevTools)

    fue:
    Puede utilizar el siguiente escenario para multar a las fugas de memoria.

    1. abrir devtools analizador de
    2. hacer una acción que realiza una fuga
    3. tomar una instantánea del montón
    4. repita los pasos 2 y 3 tiempos de los árboles
    5. seleccione la última instantánea del montón
    6. cambiar filtro «Todos los Objetos» a «Objetos Instantánea entre 1 y 2»

    Después de que usted verá los objetos de un conjunto de objetos se filtró.
    Puede seleccionar un objeto y mirar la lista de los retenedores en el Objeto de la retención árbol

    • ¿Cómo se traza un retenedor de regreso a su código?
    • Por lo general, usted acaba de saber que agrega los objetos se filtró a un contenedor porque es su código. Pero si usted no sabe, entonces usted podría anular el constructor con uno nuevo para el filtrado de la clase de objeto que registra el seguimiento de la pila y se llama a la original, a la derecha de la consola. Repita estos pasos y mirar hacia el objeto para la asignación de pila. Se podría dar una idea de lo que fue el origen de las fugas de objeto y de código que se debe quitar la última reverencia a las fugas de objeto.
  2. 2

    Utilizar el innerHTML y outerHTML valores del elemento en el Unifamiliar árbol DOM vista de la Montón Profiler a los objetos del mapa en la memoria de su código y localizar pérdidas de memoria.

    • jQuery ajax solicitudes fueron el mayor culpable en mi aplicación. Busque todos sus ajax jQuery funciones: .ajax(), .get(), .post() y el contenido de incubadoras: .html(), .texto(). Vaya a la pestaña red en dev tools, actualizar la página actual de 10 a 20 veces. Me ha resuelto un reciente pérdida de memoria con jQuery.load() dentro de mi una página JS aplicación… if(!jQuery.terms_html) $('#tc_container').load(STATIC_DOMAIN + '/terms.html', function() { jQuery.terms_html = $('#tc_container').html() }) else $('#tc_container').html(jQuery.terms_html)
  3. 0

    ajax de jQuery solicitudes fueron el mayor culpable en mi aplicación. Busque todos sus ajax jQuery funciones: .ajax(), .get(), .post() y el contenido de incubadoras: .html(), .texto().

    Vaya a la pestaña red en dev tools, actualizar la página actual de 10 a 20 veces. Si ves las cosas de apilamiento hasta con demasiada frecuencia, o las llamadas que no se ha completado, usted tiene una pérdida de memoria.

    Aquí está una reciente pérdida de memoria era capaz de resolver con jQuery.load()…

    if(!jQuery.terms_html)
    $('#tc_container').load(STATIC_DOMAIN + '/terms.html', function() { jQuery.terms_html = $('#tc_container').html() })
    else
    $('#tc_container').html(jQuery.terms_html)

    Además, la última versión de jQuery en el momento de escribir esto es 3.3.1. Tener instalada la última versión es la mejor manera de empezar, si es posible.
    https://github.com/jquery/jquery/releases

Dejar respuesta

Please enter your comment!
Please enter your name here