begin process at 2012 05 29 03:12:16
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript et le navigateur

 > 

Autre

 > 

array et mémoire


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

array et mémoire

vendredi 10 avril 2009 à 10:46:24 | array et mémoire

Larwin

Bonjour à toutes et à tous. J'ai un gros problème de mémoire sur IE avec des tableaux. Je m'explique dans ces quelques lignes qui font exploser la mémoire du navigateur alors que cela n'est pas si violent avec firefox, chrome , opéra ou que sais je... // -------------------- var x; items = new Array(); for (x=0; x<10000; x++){ items.push({data : {name : {value : '', extvalue : ''}, surname : {value : '', extvalue : ''}, age : {value : '', extvalue : ''}, cp : {value : '', extvalue : ''}, ville : {value : '', extvalue : ''}, pays : {value : '', extvalue : ''}}}); } ... je peux faire le même test avec un truc du genre for (x=0; x<10000; x++){ items.push(new Array); items[x]['name'] = {value : '', extValue : ''}; items[x]['surname'] = {value : '', extValue : ''}; items[x]['age'] = {value : '', extValue : ''}; ... etc... } le résultat est toujours le même et sans appel : explosion de la mémoire d'IE dans le gestionnaires des taches. genre +60Mo pour l'exemple quand sur chrome seulement +2 à +3Mo et ff pareil. j'ai besoin de gros tableaux a plusieurs dimensions et d'utiliser des tableaux associatifs... Merci de votre aide
vendredi 10 avril 2009 à 11:15:48 | Re : array et mémoire

Bul3

Membre Club


Bonjour,

bah...
avec    
    var x;
    items = new Array();
    for (x=0; x<100000; x++)
    {    window.status=x;
        items.push     (     {    data : { name : {value : '', extvalue : ''},
                                                 surname : {value : '', extvalue : ''},
                                                 age : {value : '', extvalue : ''},
                                                 cp : {value : '', extvalue : ''},
                                                 ville : {value : '', extvalue : ''},
                                                 pays : {value : '', extvalue : ''}   
                                               }
                                 }
                           );
    }
   
aucune explosion ( IE  ou les autres )

t'es sûr de ne faire que cela dans ta boucle ?
( si tu touchais à body.innerHTML par exemple on comprendrait )

et si c'est du à ce genre de choses, que tu ne peux pas éviter :
fait une boucle avec setTimeout.

Cordialement [mon Site] [M'écrire] Bul
vendredi 10 avril 2009 à 11:17:10 | Re : array et mémoire

Bul3

Membre Club
et... t'es sûr qu'initialiser ce tableau est nécessaire ?

vendredi 10 avril 2009 à 11:31:29 | Re : array et mémoire

Larwin

en fait oui je ne fait que ca... me suis même fait un autre fichier .html avec tout le code a l'interieur. et ca explose clairement je suis sous vista intégrale ie7 et toi Bul3 ?
vendredi 10 avril 2009 à 11:38:51 | Re : array et mémoire

Larwin

le code : items = new Array(); alert('starting'); var z = new Date().valueOf(); var x; items = new Array(); for (x=0; x<100000; x++) { window.status=x; items.push ( { data : { name : {value : '', extvalue : ''}, surname : {value : '', extvalue : ''}, age : {value : '', extvalue : ''}, cp : {value : '', extvalue : ''}, ville : {value : '', extvalue : ''}, pays : {value : '', extvalue : ''} } } ); } var y = new Date().valueOf(); alert(y-z + 'ms'); ma mémoire d'IE explose avec ces 100000 à 581Mo pour le processus...
vendredi 10 avril 2009 à 11:42:36 | Re : array et mémoire

Bul3

Membre Club
IE8+windows XP (sp2) mais bon, à ce niveau ie7+vista ce doit être pareil
testé avec safari, chrome, FF[3], opera, k-meleon...
pas de souci non plus
je disais aussi : t'es sûr qu'initialiser ce tableau est réellement nécessaire ??
à priori, je ne vois pas pourquoi.

vendredi 10 avril 2009 à 11:51:59 | Re : array et mémoire

Larwin

oui en fait je refais la listview windows en javascript.
donc j'ai besoin de stocker des données qui seront envoyé par un serveur
evidemment y'aura pas 100000 rows mais j'aime les tests un peu excessifs.
je conserverais donc le donnée dans un tableau et les afficherai a la demande dans la listview qui aura un nombre de d'objet dom limité.
je joue sur la mise a jour des données dans le controle a la volé en utilisant ce tableau.
je vais essayer sur un autre poste, et puis tenter avec ie8.
merci de ta réponse bul3

vendredi 10 avril 2009 à 15:07:19 | Re : array et mémoire

Larwin

le problème reste le même sur ie8, l'utilisation de la mémoire est excessive.
Près de 500 Mo pour l'exemple... :(
j'ai aussi testé sur un autre poste avec la même config ie7 et vista, même problème. Je vais faire un nouveau test avec XP...
En attendant si quelqu'un a une autre idée, il est le bienvenu !

Merci
vendredi 10 avril 2009 à 15:09:12 | Re : array et mémoire

PetoleTeam

Membre Club
Bonjour,
ATTENTION mettre window.status = x; est très gourmant en temps

Concernant la créatin, je te propose une autre approche pour ne pas avoir à créer à chaque itération un objet, on en crée un global
exemple
//-------------
function Data(){
  this.value = '';
  this.extvalue = '';
}
//--------------
function Enreg(){
  this.data = new Object;
  this.data.name = new Data();
  this.data.surname = new Data();
  this.data.age = new Data();
  this.data.cp = new Data();
  this.data.ville = new Data();
  this.data.pays = new Data();
}

entre nous le data est peut être de trop, mais bon...

ta boucle devient
//-- Lancement creation
var x;
var z = new Date().valueOf();
var items = new Array(); // le tableau
var Objet = new Enreg(); // Creation de l'objet
for (x = 0; x < 100000; x++) {
  items.push( Objet);
}
//-- Fin creation
var y = new Date().valueOf();
alert(y - z + 'ms');

Je terminerai en disant qu'en faisant items[x] = Objet; à la place de items.push( Objet); tu grattes encore un peu...
A toi de voir le gain...
;O)
vendredi 10 avril 2009 à 15:19:39 | Re : array et mémoire

Larwin

je concède que le data est de trop dans l'exemple :)
mais je fais ce test car dans ton exemple la "class" Enreg aura certainement d'autre données du type this.isVisible, this.isOver ...etc. et il se peut qu'il arrive qu'il y ai un this.name a ne pas confondre avec un this.data.name, dans l'exemple.

Je test le code, merci PetoleTeam, mais il me semble que je suis aussi deja allé dans cette direction aussi de mon coté sans succès...

1 2

Cette discussion est classée dans : array, mémoire, value, items, extvalue


Répondre à ce message

Sujets en rapport avec ce message

editeur menu [ par rosalin83 ] bonsoir,je vx creer un editeur de menu avec javascript voilà ce que j'ai fait mais j'ai trouvé des dificultés au niveau de l'etape suivante plus préci récuperer une donnée de formulaire [ par marcozambezi ] bonjour,j'ai un formulaire qui convertit des km/L en L/100km... et réciproquement.Je souhaite laisser le choix du nombre de décimales.. J'arrive très problème modification javascript [ par yazworld ] Bonsoir à tous, Depuis un moment je travail sur une application de base de données qui dispose d'un module permettant un interfaçage web. Cette int Quelqu'un voit il un probleme ???? [ par Tupac59 ] if(document.choix.tel.value!='')           {        if(document.choix.tel.value.length==10)        {            if(document.choix.contact_name.value!= Trier tableau généré en js [ par way2web ] Bonjour,j'ai créé un script me permettant de générer un tableau html à partir de données stockées dans un array à 2 dimensions. L'affichage est correc Limiter Caractères Textarea [ par piep14 ] Bonjour tout le monde, je cherche a limiter le nombre de caractères dans un textarea. J'ai trouvé cette fonction que j'utilise sous FF très bien et je pb dans code: marche pas [ par nanonerie ] nanonerie      calcul Addition de 2 champ txt [ par wacha ] Bonjour,Cette question peut paraitre assez simple pour vous mais je ne connais pas du tout le javascript.voila mon probleme :J'ai deux champs texte et Contrôle de formulaire [ par typher ] Bonjour,Alors voila j'ai un petit problème avec mon code javascript qui suit :Code Java :if(document.form.naissance.value !=""< Probleme de liste deroulante avec plusieurs infos [ par kprlao ] salut.J'ai un petit soucis sur ma mise à jour de ma liste déroulante, alors je demande à l'aide.lol.Le popup que j'ouvre à plusieurs données de type c


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales