2009-06-10 7 views
8

La interfaz de usuario para una aplicación en la que trabajo recientemente se ha reescrito con Ext.js y he notado que el uso de memoria de IE parece ser muy grande cuando se ve. ¿Hay problemas de memoria conocidos con Ext.js cuando se usa IE?Existen problemas de memoria con Ext.js

+0

Gracias por todas sus respuestas. Los pasaré a los desarrolladores de UI de mi equipo. –

Respuesta

9

Lo primero que me salta a la vista en su pregunta es que está viendo esto en IE. Mi equipo recientemente pasó por el mismo problema (Extjs en IE). Resulta que Ext no es el culpable, sino que IE es probablemente la causa.

Una búsqueda rápida en Google para 'IE pérdida de memoria de cierre' se encuentra un montón de explicaciones, pero el punto básico es el siguiente:

IE utiliza dos motores independientes para manejar el DOM y JavaScript. Cuando JavaScript realiza una llamada para crear un elemento DOM, el motor de JavaScript se cruza con el otro para crearlo. Si adjunta JavaScript a un evento en un elemento DOM, se crea un vínculo desde el lado DOM al lado JavaScript.

El problema radica en el hecho de que cada motor tiene su propia recolección de basura y no puede ver a través del otro motor. Así que las referencias circulares son REALMENTE fáciles de encontrar que pueden consumir grandes cantidades de memoria muy rápidamente.

0

Por lo que a mí respecta, no he oído hablar de fugas de memoria notables en ExtJS. Aunque estoy seguro de que hubo algunos, generalmente se solucionan bastante rápido, y la comunidad es tan grande que se conocen la mayoría de los errores.

Asegúrate de que tu diseño se basa en componentes individuales que puedes agregar y eliminar cuando ya no los necesites, ya que la mayoría de las veces una página web ExtJS solo se carga una vez y se llena con los componentes adicionales que obtienes eso. Puede liberar algunas mem usando Ext.destroy (this.el) una vez que haya terminado de usar un componente.

Además, asegúrese de utilizar Firebug para rastrear cualquier componente u objeto que debería haberse eliminado.

1

Creo que es bastante fácil crear pérdidas de memoria al programar con ExtJS para programadores no experimentados. Esto no es un problema ExtJS en sí mismo. Es el paradigma de programación ExtJS que permite a los programadores cometer fácilmente esos errores.

Desde mi experiencia, he creado pérdida de memoria cuando intenté hacer un chat AJAX directo usando ExtJS. Cuando algunos objetos se crean constantemente dentro de las devoluciones de llamada AJAX (como áreas de almacenamiento de datos, manipulaciones de cuadrículas), estos objetos no se liberan ni se destruyen. Debe haber técnicas especiales y muy inteligentes para evitar fugas de memoria con ExtJS, y no solo está relacionado con AJAX o devoluciones de llamada.

Con todo, ExtJS es una gran biblioteca, pero debe usarse con cuidado.

+1

Existe una propiedad de autodestrucción para las tiendas que puede ayudar con esto. – geographika

0

Eche un vistazo a this thread in their forums que cubre una gran cantidad de fugas en Ext 2.2 causadas por elementos huérfanos. Parece que Ext 2.2.1 solucionó la mayoría de ellos.

El problema sigue siendo Abierto, por cierto. ;)

Cuestiones relacionadas