Uso de la memoria que sube en la aplicación PhoneGap

Tengo una aplicación PhoneGap / JQuery MObile que busca datos del servidor a través de Ajax y lo muestra como una lista. Con cada búsqueda de Ajax la memoria ocupada por la aplicación aumenta en unos 10 MB. Para la primera búsqueda puede estar bien, ya que obtiene un gran número de registros (alrededor de 700). Sin embargo, para las llamadas siguientes mi entendimiento es que debe reutilizar la memoria en lugar de apilar otros 10 MB cada vez. He utilizado .off () para liberar los manejadores de eventos en caso de que estaban celebrando la memoria, pero no éxito.

Aquí está la página principal Div donde se muestra la salida:

<div data-role="content" class="MainContent" style="overflow:hidden; padding-top: 0px;"> <ul data-divider-theme="b" data-role="listview" data-inset="true" class="MainMenu"> </ul> 

Y este es el código Javascript que busca los datos del servidor y muestra en la div anterior.

 AjaxFile = "mydomai.com/ajax.php"; $.get(AjaxFile, function (AjaxData) { $( ".PL" ).off(); $(".MainMenu").off(); $(".MainContent").off(); AjaxData = '<li class="MainMenuList" data-role=list-divider>' + gTitle + AjaxData; $(".MainMenu").empty(); $(".MainMenu").html(AjaxData); $(".MainMenu").listview('refresh'); window.scrollTo(0, 0); $.mobile.loading('hide'); HighlightRow(gCurrentFile); $(document).ready(function () { $(".PL").click(function () { if ( !$(this).hasClass("BTitleRow") ) { $(".PL").removeClass("RowHighlight"); $(this).addClass("RowHighlight"); OpenNewLink($(this).attr('name')); } }); }); }); AjaxData = null; return; 

¿Puede alguien por favor decirme cómo puedo liberar la memoria y asegurar que la misma memoria se reutiliza en lugar de amontonar más y más memoria.

Muchas gracias.

========= UPDATE ===========

Incluso si elimino la parte inferior, todavía puedo ver el uso de memoria subiendo:

 $(document).ready(function () { $(".PL").click(function () { if ( !$(this).hasClass("BTitleRow") ) { $(".PL").removeClass("RowHighlight"); $(this).addClass("RowHighlight"); OpenNewLink($(this).attr('name')); } }); }); 

Parece que hay algún tipo de pérdida de memoria en Ajax, así como listview ("refresh"). Puede alguien ayudarme por favor. Gracias

No es una respuesta completa, pero si se puede ejecutar la aplicación web en Chrome (por lo que fuera de Phonegap) podría utilizar el perfil de Javascript para tomar una instantánea de Heap para averiguar dónde se utiliza la memoria.

Si tienes que ejecutar dentro de Phonegap pero tienes un dispositivo Android también es posible conectar el depurador de Chrome a él, y con un poco de hacking también es posible conectar dispositivos iOS o simuladores.

La culpa no es tu código. Es jQuery que les encanta comer memoria a menudo veo una proporción de 4 entre un javascript puro y una aplicación jQuery en consomption memoria.

O no usas jQuery para la parte crítica en tu desarrollo móvil, o no usas jQuery para tus aplicaciones móviles (eso es lo que estoy haciendo), o bien usas http://plugins.jquery.com/cache / Y limpiar la memoria de vez en cuando.

BR

Pruebe esto, se desactivará la captura cuando se inicia la aplicación. Sé que esto es lo que realmente quieres, pero puede ser que te ayude ..

 super.clearCache(); // just add This Line super.loadUrl("file:///android_asset/www/index.html"); 
  • Máxima memoria nativa que se puede asignar a una aplicación para Android
  • Android: fugas de memoria al crear dinámicamente UI con fondos de recursos de imagen
  • Tamaño máximo de montón nativo en Android?
  • android Baja memoria: no más proceso de fondo ?? Necesitas ayuda
  • ¿Hay de todos modos una aplicación puede utilizar más de 16mb en la memoria?
  • OutOfMemoryException al pasar la imagen de la cámara a OpenCV
  • ¿Es seguro pasar la instancia de una Actividad a otro objeto?
  • Android java, obtener más uso de memoria permitido
  • Android: obtiene la asignación de memoria USS de forma programática
  • Cómo encontrar fugas de memoria del código nativo en android
  • Android: pre y post-HONEYCOMB montón de uso debido a los mapas de bits?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.