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

Format d'échange (XML, JSON...) Java Discussion :

[Xml][Memoire] gestion du cache


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 11
    Points : 6
    Points
    6
    Par défaut [Xml][Memoire] gestion du cache
    Bonjour,

    j'ai developpé un gros programme avec lequel je parse de tres gros fichiers XML (200Mo en moyenne) pour l'afficher sous forme d'abre JTree.
    Le pbroblème c'est que ca me prend enormement de temps et que je dois allouer au moin 1G de memoir pour que ca marche.
    De plus, le programme parse en plus du fichier XML, des fichiers Excel de petite taille. La parcontre le temp de parsing depend de la taille du fichier XML ouvert.
    Je voudrais savoir si Java est capable de gérer la mémoire, est ce qu'il est possible de verifier que le GC elimine bien les objets non utilisé.

    Merci pour vos lumières

    [ Modéré par Bulbo ]
    Ajout d'un tag dans le titre
    Les Règles du Forum

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 84
    Points
    84
    Par défaut
    Salut,

    Tu utilises quoi pour parser tes fichiers XML?

    Perso pour un stage de fin d'année, j'avais développé une application qui devait parser des fichiers XML assez gros comme toi et qui les affichait sous forme d'arbre.Le probleme est que si tu utilises DOM/SAX tu gardes la représentation de l'arbre et du fichier DOM en mémoire, ce qui donc utilises une place mémoire astronomique!!
    Du coup on avait eut aussi des problèmes...
    Si tu utilises DOM et que tu ne fais pas de modif après sur tes fichiers xml, tu peux deja détruire l'objet DOM..................
    Après pour les fichiers Excel, je pense que le noeud du pblm soit la....

    J'espère répondre ne serait ce qu'un peu à ta question...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    merci de m'avoir repondu,

    En effet j'utilise JDOM qui utilise DOM et SAX, le problème c'est que je dois conserver le document XML pour que je puisse le modifier. Et ton obligatoirement obligé de conservé la representation graphique et le document XML?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 84
    Points
    84
    Par défaut
    Qu'appelle tu representation graphique? le JTree?

    Si t'a plus de Jtree tu peux plus parcourir ton fichier dom de maniere visuel à l'écran(ce qui peut être génant si comme moi tu utilises ton Jtree pour générer différents types de JPanel pour un affichage dynamique t une utilisation plus convivial!!)

    Par contre idéé interessante de supprimer le fichier XML puisqu'a partir du dom tu peux recréer ledit fichier XML.......
    Mais est ce que c'est le fichier XML qui bouffe de la mémoire? je pense pas malheureusement...(bouffe pas de la memoire vive...)

    Ce qui est super lourd en mémoire c'est le dom!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    En effet le PC le garde tous le temps en mémoire et de manière entière!!
    Et le probleme ce que tu utilises le dom pour parcourir le fichier XML pour écrire aux bons endroits...

    Et la j'avoue on n'avait pas spécialement trouve de solution...

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    merci pour t'a reponse.
    Sinon, est-il possible de diminuer le temps de parsing si l'on fragemente le fichier XML. Si oui as tu deja fais ce genre d'operation?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 84
    Points
    84
    Par défaut
    je n'ai jamais fait ce genre d'opérations...

    Par contre lors de mon projet(jpe pas tout te dire car c'était un projet pour l'INRIA donc relativement protégé........) j'avais assisté à une présentation qui parlé du temps de charge des fichiers suivant le parseur utilisé.
    Alors je fais appel à ma mémoire, et je te dirais qu'il me semble que pour DOM le plus long étais de charger le fichier pas spécialement de le traiter.Et il je crois que DOM était malheureusement le plus lent....Mais il est tellement pratique!!

    A mon avis le probleme vient plutot du coté de la technologie c'est à dire de la vitesse de calcul de l'ordinateur et de sa mémoire....Et la on peut pas faire grand chose!!!A quand des ordinateurs avec des capacités encore plus grande?

    En effet tu traite des fichiers qui commence à avoir des tailles conséquentes et donc on tend vers la limite de ton ordinateur, d'ou le temps de parsing relativement long.Si on regarde bien, java + DOM+appli+tous les processeurs qui tournent ca commence a faire beaucoup pour la memoire!!!(java c'est gros qd meme et ton dom est énorme)
    Enffin c'est ce que j'en pense après une chtite réflexion.

    Qu'en penses tu toi meme?

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Je pense que mon poste de travail est au bord du gouffre. Mais encore, je peux comprendre que DOM prennent enormement de place memoire et de temps de calcul. Ce que je n'arrive pas a comprendre c'est pouquoi après avoir chargé le fichier XML puis affiché sous forme d'arbre JTree, lorsque que je souhaite chargé un petit document de rien du tout en Excel (l'applie que j'ai développé utilise JExcelApi) le temps de chargement varie en fonction de la taille du fichier XML que j'ai chargé précedament.
    Par exemple, je prend un petit fichier XML de 10 Mo, que je parse plutot rapidement, lorsque ensuite j'ouvre un fichier Excel avec un autre fonction de mon appli, la c'est rapide.
    par conte lorsque le fichier XML est de 200 Mo, le fichier Excel qui lui n'a pas changé, prend cette fois enormement de temps de chargement (juste le chargement et pas le traitement)

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 84
    Points
    84
    Par défaut
    le dom bouffe de la ressources(enormement), donc plus il est gros plu il y a de ressources occupées donc moins tu a de place en mémoire pour charger ton fichier excel.(le dom reste en mémoire,donc elle ne se vide pas a priori).Du coup pour faire un second travail tu mets d'autant plus de temps qu'il y a de ressources occupées.
    A mon avis(et ca n'implique que moi) cela doit etre pour ca!!

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    merci pour les infos

  10. #10
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 63
    Points : 74
    Points
    74
    Par défaut
    bonjour
    je pourais te dire que SAX est plus adapté aux genre d'application que tu veut realiser, surtout si tu fait un parcours lineaire de ton document XML ce que fait SAX fait sans charger de representation arborescente en memoire, donc dans de gros fichier XML comme ça un passage a l'echelle est obligatoire sinon ça boufe trop de memoire.

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    salut, qu'est ce que tu entend par passage à l'echelle? tu pourrais preciser stp. merci

  12. #12
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 63
    Points : 74
    Points
    74
    Par défaut
    le passage a l'echelle consiste a:
    1-limiter les parcours possibles aux seuls parcours efficaces, et dans toute la mesure du possible à un parcours en profondeur d’abord de gauche à droite qui correspond à l’ordre de lecture des documents et à l’ordre de notification des événements SAX ;
    2-limiter la « fenêtre » de noeuds à conserver pendant la transformation au nombre le plus petit possible ;
    3-borner à la plus petite valeur possible l’espace mémoire nécessaire pour accumuler les résultats intermédiaires de la transformation.

    c'est a dire parvenir a un temps de transformation qui soit dans O(N) et l'espace nécessaire pour conserver les noeuds de la fenetre et les resultats intermediare soit dans O(log N) ou N est le nombre de noeuds dans l'arborescence à transformer, c'est a dire la performance d'un parcours d'arbre en profondeur d'abord.

Discussions similaires

  1. Réponses: 6
    Dernier message: 24/04/2012, 13h53
  2. [cache] Gestion du cache en général
    Par Maxoo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 15/12/2006, 10h21
  3. Gestion du cache d'un ResulSet
    Par skunkies dans le forum JDBC
    Réponses: 1
    Dernier message: 30/10/2006, 18h12
  4. Réponses: 11
    Dernier message: 15/04/2006, 23h27
  5. [Sécurité] Gestion du cache / cookies
    Par dug dans le forum Langage
    Réponses: 4
    Dernier message: 25/01/2006, 21h17

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