2011-04-17 11 views
19

He estado trabajando en un juego para HTML 5 utilizando la etiqueta canvas, y he creado una base de código bastante para cubrir mis necesidades. También quiero asegurarme de ocultar todas las filtraciones de memoria.Al perfilar Javascript en Chrome, ¿cómo sé que he manejado Memory Leaks?

Tengo dudas de que lo esté haciendo correctamente porque los comentarios que obtengo del administrador de tareas de Chrome y las herramientas de creación de perfiles parecen sugerir que mi limpieza no tendrá ningún efecto al final.

Aquí está una imagen para que pueda ver lo que quiero decir:

enter image description here

Así como se puede ver, una vez que hago uso de la memoria de mi limpieza sólo se bloquea y no baja. ¿Es esto una pérdida de memoria?

Cuando ejecuté mi página web en el Analizador y revisé el montón antes y después de la limpieza, parece que eliminó todas las referencias a mis objetos (y desaparecen) pero mi uso solo se reduce en unos pocos kilobytes dejando aproximadamente 1.3mb de matrices, cadenas y otros objetos detrás. ¿Es imposible captar todo esto o hay algo muy grave?

Gracias.

+0

Sospecho que el problema que está describiendo no está relacionado con la pérdida de memoria, pero solo para estar seguro, ¿cómo "limpia la memoria"? – Khez

+0

@Khez Cada uno de mis objetos tiene una función de destrucción y en ella establecen que todos los objetos que contienen son nulos, y cualquier matriz que vacian, cualquier referencia de dom se elimina de sus padres y se establece en nulo, etc. ' –

+0

Entonces asumo que Chrome solo mantiene la memoria viva para su uso posterior. – Khez

Respuesta

3

En la parte inferior de la ventana del generador de perfiles hay un icono que parece una papelera, forzará un pase de GC.

Púlselo y vea si borra el resto de la memoria.

Es posible que Chrome/V8 simplemente no piense que la situación de la memoria es lo suficientemente grave como para requerir que se ejecute la recolección de elementos no utilizados.

+0

Eso lo hizo caer a alrededor de 1mb. Desafortunadamente todavía hay toneladas de cadenas y arrays que no puedo encontrar. –

1

Pruebe chrome://memory-redirect/ (o about:memory, ambos van al mismo lugar). Le mostrará la cantidad exacta de memoria utilizada por cada pestaña/etc, además de la memoria utilizada por las etiquetas/etc en IE, Opera, Firefox, etc. si las tiene abiertas al mismo tiempo. Los números brutos deberían ser un poco más útiles que solo el gráfico para perfilar el uso de la memoria en busca de fugas potenciales.

+0

También he descubierto chrome: // tasks/que es un poco más en tiempo real. – BrianFreud

Cuestiones relacionadas