12

Actualmente estoy desarrollando una aplicación que utiliza el marco WebGL de Google O3D, y esta es la primera vez que uso JavaScript de manera intensiva. Las funciones solo tienen un 20% de compleción, pero la aplicación ya comienza ocupando alrededor de 160 megas de memoria, mientras que la ejecución de la aplicación consume alrededor de 200 kb por segundo en Chrome, 2 megas en FF; a medida que la pantalla se actualiza. Mientras escribo esto, he dejado Chrome 9 funcionando y acaba de llegar a 400 megas de uso de memoria. Ahora me estoy aprovechando especialmente del uso de FF, y estoy buscando cualquier documentación realmente buena sobre la optimización de JavaScript, evitando fugas de memoria, cualquier cosa que me ayude a abordar esto básicamente. También agradecería cualquier enlace a herramientas increíbles que me ayuden. Gracias por adelantado.Uso de la memoria de Javascript y depuración en Chrome/Firefox (campo de minas)

Editar: He encontrado Mozilla performance tools pero necesito algo simple de usar, preferiblemente con una GUI, o al menos una guía amigable novato. También muchas de esas herramientas son para Linux (estoy usando Win7) o requieren compra/son solo líneas de comando. + Realmente me gustaría ver algo para Chrome :) pero aceptaré la respuesta que proporcione la información más útil.

Editar: Las herramientas para desarrolladores de Google Chrome solo informan sobre 10 megas de uso de memoria, sin saber de dónde viene el resto.

+0

Ese uso de memoria (160 MB) no es poco común en aplicaciones 3D. Piense en la cantidad de memoria que ocupan los juegos 3D reales, y además, ¡su aplicación está escrita en JavaScript! Pero el aumento constante de la memoria que está experimentando probablemente se deba a algún tipo de pérdida de memoria, aunque no puedo ayudarlo más que eso. –

+1

@musicfreak: Muy cierto, espero que ocupe bastante memoria y requiera que los usuarios tengan una PC decente, pero el aumento en el uso de la memoria de fox no tardará mucho en alcanzar un máximo de un sistema de usuarios si déjalo abierto, ¡creo que es mejor que lo solucione ahora antes de ir más lejos! porque quiero ser capaz de abordar este tipo de cosas en el futuro :) – Chris

+1

Sí, es cierto, y definitivamente creo que se debe a fugas de memoria (ya sea en la implementación de WebGL o en su aplicación, muy probablemente sea la última), pero acabo de quería mencionar que el uso de la memoria original probablemente no sea su culpa. :) –

Respuesta

7

¿Has tenido la oportunidad de comprobar Speed Tracer todavía? Eso debería darte más de lo que necesitas, creo.

Con el uso de memoria, es probable que desee hacer un perfil de pila en las herramientas de desarrollador de Chrome en la pestaña "Perfiles". Puede comparar múltiples perfiles de montón para ver el uso de la memoria.

+0

Gracias. He echado un vistazo a Speed ​​Tracer, muestra un temporizador que realiza la actualización con regularidad, pero solo se vuelve lento cuando aumenta el uso de la memoria. Logré obtener el montón de memoria y muestra 10 megas de elementos, pero esto no explica el resto. Tengo la sensación de que mi código es realmente malo, no estoy usando la función de eliminación que leí en algún lado. Esto es probablemente lo que necesito estudiar, C# por ejemplo, en la mayoría de los casos, aconseja utilizar el material en cualquier clase que herede la interfaz IDisposable una vez que haya terminado con ellos.Tengo una clase de función personalizada para todos mis objetos 3d params – Chris

+0

Debe haber una herramienta que va y agrega eliminar a todas las propiedades no utilizadas en tu código, esa es una herramienta que pagaría. – Chris

+0

También está la página 'about: memory' en las versiones recientes de Chrome. –

Cuestiones relacionadas