J'ai écrit une application pour une utilisation hors ligne (avec Google Gears) sur les appareils utilisant IE Mobile. Les appareils subissent des fuites de mémoire à un rythme tel que l'appareil devient inutilisable avec le temps. La page de problème récupère les entrées de la base de données locale Gears et affiche une table de chaque entrée avec un lien dans la dernière colonne de chaque ligne pour ouvrir l'entrée (le lien est juste onclick = "open ('myID')"). Quand ils l'ont fait avec l'entrée, ils retournent à la table, ce qui est RE-rendu. C'est le bâtiment répété de cette table qui semble être le problème. Principalement les événements onclick.Comment puis-je empêcher les fuites de mémoire dans IE Mobile?
Le tableau est généré essentiellement comme ceci:
var tmp="";
for (var i=0; i<100; i++){
tmp+="<tr><td>row "+i+"</td><td><a href=\"#\" id=\"LINK-"+i+"\""+
" onclick=\"afunction();return false;\">link</a></td></tr>";
}
document.getElementById('view').innerHTML = "<table>"+tmp+"</table>";
J'ai lu sur des causes communes de fuites de mémoire et essayé de placer l'événement onclick pour chaque lien vers « null » avant de re-rendu de la table mais il semble toujours y avoir une fuite.
Quelqu'un a-t-il des idées?
Dans le cas où il importe, la fonction appelée de chaque lien ressemble à ceci:
function afunction(){
document.getElementById('view').style.display="none";
}
Would qui constituent une référence circulaire de quelque façon?
Jake
Revenez? La fermeture du navigateur libère complètement la mémoire. Faire une "fermeture en douceur" améliore les performances lorsque vous l'ouvrez de nouveau mais ne libère pas la mémoire. L'appareil est un XDA Orbit 2. –