Llamo a una función 50 veces por segundo, lo cual hace algunas cosas costosas ya que está pintando mucho en un elemento <canvas>
.Fuga de memoria en JavaScript (Chrome)
Funciona muy bien, no hay problemas allí, pero solo eché un vistazo al uso de la memoria y me estaba robando 1MB por segundo de mi memoria RAM. Chrome parece recolectar basura, ya que disminuyó cada minuto más o menos, pero luego el uso volvió a crecer.
Lo que probé es poner return
en ciertos lugares en mi función para decidir qué parte de mi función causa exactamente la fuga. Pude reducirlo a una línea específica de código, después de lo cual aparece la parte malvada, pero realmente no sé cómo resolverla.
Mis preguntas son:
- Qué herramienta está disponible para medir de manera eficaz las pérdidas de memoria de JavaScript en Chrome?
- ¿Sería eficaz establecer las variables a
null
/undefined
después de que se hayan utilizado, algo así como deshacerse de ellas?
Si el código fuente es realmente necesario, no dudaría en publicarlo aquí, pero debo admitir que es largo y tal vez algo incomprensible para otros.
En realidad, no tengo referencias circulares. Son todas las clases 'Vector' personalizadas que representan puntos en 3D y 2D en mi función de renderizador. Supongo que se acumulan en la memoria si llamo a la función 50 veces por segundo. ¿Seguir anulando aún ayuda? He estado experimentando en vano en este momento, ambos usando 'delete' y' = null'. – pimvdb
@pimvdb Lea el artículo, es bastante extenso pero muy completo para mostrar cómo funciona realmente la eliminación. No podría decir si alguna de las opciones sería exitosa para usted. js fugas son siempre un b ** ch. – Andrew