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:
- Máxima memoria nativa que se puede asignar a una aplicación para Android
- Simulación de memoria en android
- Límite de tamaño de Android montón, todavía tenemos necesidad de diseñar aplicaciones con un límite de 16 MB en mente?
- Cómo borrar la memoria inactiva en Android mediante programación?
- Bitmap recycle () en java Android
<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
- Tamaño de una aplicación Android de Hello World
- Fuga de memoria de WebView en la aplicación de Android
- android Baja memoria: no más proceso de fondo ?? Necesitas ayuda
- Android SparseArray con la clave de cadena?
- ¿Cómo descubro el uso de memoria de mi aplicación en Android?
- DeadObjectException en la aplicación android
- Almacenamiento de datos de aplicaciones de Android en la tarjeta SD
- Fuera de la memoria
3 Solutions collect form web for “Uso de la memoria que sube en la aplicación PhoneGap”
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");
- Comportamiento extraño de una actividad en diferentes versiones de Android: el mapa parpadea
- ¿Cómo puedo implementar formas no rectangulares para los botones de android