Différence de mémoire entre devices WP7

Dernièrement, en voulant mettre à jour mon application sur Game of Thrones (http://windowsphone.com/s?appid=5e21066c-8a36-4dfb-b5ba-212995de6edf), j’ai reçu un rapport de Microsoft dans lequel mon application crashait sur les Nokia Lumia 800.
Après quelques dizaines de minutes à rechercher le bug, j’ai trouvé que mon application consommait trop de mémoire !
Après avoir run des tests, en effet sur une page de l’application je consomme près de 200Mo de mémoire vive. Mais cela marchait impeccablement sur mon Omnia !

Et là intervient une propriété propre à chaque type de device et qui peut énormément changer !
La mémoire allouée aux applications par le téléphone !

Grâce au long : long x = DeviceStatus.ApplicationMemoryUsageLimit; On peut retrouver la mémoire en bytes attribués aux applications.
Sur Omnia 7 elle est de 299Mo et sur Lumia 800 de 213Mo ! Soit presque 29% de mémoire en plus pour le Omnia 7 !

Il faut donc tester si l’application dispose d’assez de mémoire avant de lancer une grosse fonction (en l’occurrence pour moi l’affichage d’une très grande image 1800*2000).

On peut retrouver la mémoire disponible actuellement grâce à :
long x = DeviceStatus.ApplicationMemoryUsageLimit – DeviceStatus.ApplicationCurrentMemoryUsage;

Personnellement j’ai laissé une marge de 50Mo, si je n’ai pas cette marge disponible je n’exécute pas la fonction prévue et alerte l’utilisateur.

Je dresse ici une liste des devices que j’ai pu retrouvée et la mémoire allouée pour chacun :
LG C900 : 332Mo
HTC Surround : 303MO
Samsung Omnia 7 : 299Mo
Nokia Lumia 800 : 213Mo

%d blogueurs aiment cette page :