JS sur IE : Problème de mémoire, je pense

JS sur IE : Problème de mémoire, je pense - HTML/CSS - Programmation

Marsh Posté le 28-02-2008 à 21:01:06    

J'ai un petit souci de Javascript :  
 
Sur une page toute simple, je génère une énorme array bidimensionnelle.  
 
Celle-ci est en fait constituée d'une série d'arrays temporaires qui sont "pushées" sur elle :  
 

Code :
  1. var mybigArray=new Array();
  2.                
  3. var JStemp = new Array();
  4. JStemp["index1"]="foo";JStemp["index2"] = "bar";JStemp["index3"] = "yeah";
  5. mybigArray.push(JStemp);
  6.  
  7. delete JStemp;
  8.  
  9. var JStemp = new Array();
  10. JStemp["index1"]="hey";JStemp["index2"] = "joe";JStemp["index3"] = "pouet";
  11. mybigArray.push(JStemp);
  12.  
  13. //etc.

Présenté comme ça , utiliser une array multidimensionnelles n'a pas d'intérêt ici mais je synthétise le code à l'extrême..
 
Il y a à peu près 4000 JStemp générées et pushées sur myBigArray, certaines des strings encodées font jusqu'à 255 caractères.
 
Avec FF et Opera : aucun problème, même si naturellement la  génération de la page met un certain temps (comme vous vous en doutez je ne tape pas les 4000 lignes, elles sont générées via des scripts).
 
Avec IE7 (pas essayé IE6, je ne l'ai plus sous la main), je reçois une "erreur de syntaxe" à une certaine ligne, qui ne diffère quasiment en rien de la ligne précédente, et à un certain caractère qui se trouve en plein milieu d'un index ou d'un contenu ...  
 
- Si je ne mets pas l'instruction "delete", le message arrive aussi, à quelques lignes de différences.  
- Si je raccourci drastiquement les strings contenues dans chacun des éléments de JStemp, même chose ...
 
Ce message d'erreur ne semble avoir aucune logique et donc à priori pas une erreur de syntaxe  comme il le prétend..
Du reste, si je mets en commentaires à partir de cette ligne jusqu'à la fin, ça fonctionne bien sans erreur.
 
Alors j'ai trouvé sur le Net une foule d'article sur les "memory leaks" d'Internet Explorer avec Javascript, mais cela ne semble concerner que des objets DOM faisant référence circulaire avec des objets JS, ce qui n'est pas mon cas ici. De plus, M$ a sorti un hotfix pour ce ce bug, qui a donc été corrigé.
 
Est-ce que vous avez une idée plus précise de ce qui m'arrive, et surtout comment je peux régler ce problème, à part en forçant les gens à ne plus utiliser IE ? (ce que je ne peux pas (encore?  :D ) faire au boulot, IE étant le seul navigateur officiel (c'est pas moi qui fais les règles...))


Message édité par ZeBix le 28-02-2008 à 21:01:28
Reply

Marsh Posté le 28-02-2008 à 21:01:06   

Reply

Marsh Posté le 28-02-2008 à 21:02:46    

Et il sert à quoi ton gros array ? [:pingouino]

Reply

Marsh Posté le 28-02-2008 à 21:30:29    

à afficher une arborescence :)  - en Javascript car on doit pouvoir faire de rapides opérations browser du genre "open tree", "close tree" etc.  
 
Je sais on pourrait utiliser de l'Ajax etc., ce sera pour une version ultérieure, là faudrait vraiment que cette version tourne sur IE ... :/

Reply

Marsh Posté le 28-02-2008 à 21:31:29    

Laisse tomber, c'est sûrement trop. Faut effectivement "lazy-loader" les sous-arbres en Ajasque

Reply

Marsh Posté le 29-02-2008 à 09:18:09    

*sigh*  
 
merci quand même

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed