IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IGN API Géoportail Discussion :

Fuites de mémoire ?


Sujet :

IGN API Géoportail

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 25
    Points : 8
    Points
    8
    Par défaut Fuites de mémoire ?
    Mon application sur les bateaux commence à avoir de l'allure puisque j'ai réussi à ne rafraîchir que les couches vectorielles (mes bateaux) qui peuvent évoluer chaque minute. Les couches Geoportail et WMS ne sont plus rafraîchies chaque minute. C'est donc bien meilleur en terme de bande passante et de temps de réponse.

    Mais, car il reste un hic, la consommation mémoire augmente à chaque rafraîchissement et, vu que c'est une appli, qui doit fonctionner 24/24, 7/7, ce ne sera pas fiable.

    Voilà le code que j'utilise toutes les minutes pour effacer de ma carte les éléments variables avant de les recalculer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    function NettoyerCouchesBateaux() {
    	var p,i;
    	// Supprimer les popups de la carte
    	for (p=map.popups.length-1;p>=0;p--) {
    		map.removePopup(map.popups[p]);
    	}
    							
    	// Supprimer les markers de la liste
    	for (i=layerAIS.markers.length-1;i>=0;i--) {
    		layerAIS.removeMarker(layerAIS.markers[i]);
    	}
    			
    	// Vider la couche Vector
    	layerHisto.destroyFeatures();
    }
    Est-ce assez efficace ? Peut-on faire autrement ?

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut remove n'est pas destroy
    Citation Envoyé par Mick Helley Voir le message
    Est-ce assez efficace ? Peut-on faire autrement ?
    De mon souvenir, removePopup() et removeMarker() ne détruisent pas les OpenLayers.Popup et OpenLayers.Marker ...

    Peux-tu essayer d'ajouter les destroy() de ces objets et faire un retour ?

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut
    Citation Envoyé par dgrichard Voir le message
    Peux-tu essayer d'ajouter les destroy() de ces objets et faire un retour ?
    En fait, destroy() d'Openlayers.Feature est sensé faire tout le travail que tu fais !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    layerHisto.destroyFeatures()
    devrait être suffisant ... donc, il y a autre chose ?!

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 25
    Points : 8
    Points
    8
    Par défaut
    Le destroyFeatures() n'enlève pas chez moi les markers, ni les popups associés malheureusement. C'est curieux et dommage.

    J'ai rajouté des destroy() et forcé la mise à null d'un grand tableau de valeurs avant l'appel vers la base de données. Je fais tourner l'appli tout ce week-end et je regarderai l'occupation mémoire de Firefox.

Discussions similaires

  1. fuite de mémoire ?
    Par salseropom dans le forum C
    Réponses: 2
    Dernier message: 12/01/2006, 17h19
  2. Réponses: 1
    Dernier message: 02/12/2005, 15h18
  3. fuite de mémoire
    Par mamag dans le forum MFC
    Réponses: 17
    Dernier message: 19/08/2005, 11h42
  4. Fuite de mémoire en utilisant le template list
    Par schtroumpf_farceur dans le forum Langage
    Réponses: 9
    Dernier message: 18/07/2005, 21h44
  5. Réponses: 8
    Dernier message: 17/10/2002, 13h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo