Problème de mémoire "out of memory" avec une applet

aLCHMEY Messages postés 6 Date d'inscription mardi 29 juin 2004 Statut Membre Dernière intervention 2 août 2005 - 1 août 2005 à 11:34
aLCHMEY Messages postés 6 Date d'inscription mardi 29 juin 2004 Statut Membre Dernière intervention 2 août 2005 - 2 août 2005 à 12:42
Bonjour,







Voici mon problème : J’ai un problème de « out of
memory » avec une application (applet) qui traite de gros fichiers XML (6,
10 voir 15 méga octets), avec la version
non applet j’ai pu trouvé une solution à ce problème de mémoire en augmentant la
taille de la mémoire allouée à la machine virtuel java (java –Xms128 –Xmx128
nom_application).







J’ai cherché dans l’Api de java mais je n’ai pas trouvé
d’option ou de class qui permet de configurer (afin d’augmenter la mémoire) la
machine virtuelle du navigateur qui exécute l’applet.







J’aimerais savoir si vous avez des propositions ou des
remarques concernant mon problème




Merci d’avance.







[nabil]

6 réponses

cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
2 août 2005 à 00:15
Quand tu dis traite, c'est à dire ???

Astu besoin de l'arbre après ou juste des données en flux ...



Tu dois utiliser DOM pour avoir de tels problèmes non ???

Est-ce qu el'utilisation de SAX ne simplifierais pas le prob ???



Ca me rappel un de mes progs ça ;-)



++
0
aLCHMEY Messages postés 6 Date d'inscription mardi 29 juin 2004 Statut Membre Dernière intervention 2 août 2005
2 août 2005 à 10:01
Salut :


Quand tu dis traite, c'est à dire ???




Alors le traitement consiste en l’analyse du fichier XML, en
gros le fichier XML peut représenté une base bibliographique par exemple, le
module permet de faire des recherches de type co-occurrence voici un exemple :




Supposant que nous avons la structure publication suivante,
on peut la représenter ainsi :



















<nom>




Machin




</nom>








Truc








<titre>




toto




</titre>
















Grâce au module récursif l’utilisateur peut faire une
recherche de type (,) pour trouver tous les
ouvrages coécrit. (D’où la nécessité d’avoir la totalité de l’arbre en mémoire)




Ce n’est qu’un aperçu du fonctionnement de ce module,
malheureusement je ne peux pas modifier le code source, car il a été développé
à part par un ingénieur, ma mission consiste à greffer une interface
graphique (applet) afin de l’utiliser.







Tu dois utiliser DOM pour avoir de tels problèmes non ???


Est-ce que l'utilisation de SAX ne simplifierait pas le prob ???







Le parseur SAX est utilisé dans le module récursif.







Merci à vous.









[nabil]
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
2 août 2005 à 10:54
Salut,

en fait tu te sers de XML pour faire une base de données ...

Est-ce le plus efficace dans ton cas, pourquoi ne pas utiliser un SGBD
même embarquée (HSQLDB, MySQL, ...) parce que tu ne pourras pas régler
ce problème là efficacement surtout si ta base doit grossir par la
suite ...



++
0
aLCHMEY Messages postés 6 Date d'inscription mardi 29 juin 2004 Statut Membre Dernière intervention 2 août 2005
2 août 2005 à 11:45
Effectivement, le choix d’une base de données de type MySQL
ou autre peut résoudre le problème de l’évolution de la taille de la base comme
tu l'as remarqué, mais le vrai problème (de fond) est que toute emploi d’une base
de données de type (entité –relation)empêche le moteur récursif de faire des recherches croisés (comme je
l’ai expliqué précédemment) :









Les données (fichier XML dans
notre cas) injectées dans le moteur pour analyse sont structurées de la manière
suivante :







Lorsque l’utilisateur lance une recherche de co-occurrences,
par exemple « X x Y », le moteur commence par parcourir chaque
enregistrement (Record).







Une première vérification est effectuée pour regarder si
l’enregistrement possède le type X et le type Y. Si ce n’est pas le cas,
l’enregistrement n’est pas analysé et le moteur passe à l’enregistrement
suivant.







Dans le cas contraire, l’analyse récursive de
l’enregistrement commence. Pour ce faire, le moteur prend chaque terme du 1er
type X auquel il va associer récursivement chaque terme du 2ème type
Y pour former une occurrence, etc...








A l’heure actuelle unesolution seulements’offre à
moi,revenir à la version application de
l’interface graphique, mais dans ce cas je perds la facilité offerte par
l’Applet par rapportà l’utilisation du
programme (il suffit juste d’avoir un navigateur compatible java).








[nabil]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
2 août 2005 à 11:55
Salut,

Je pense que ta structure de données n'est pas la meilleure qui soit ici ...

Mais sache que cela peut-être réalisé via un SGBD du moins la première
partie du travail, la seconde est un traitement des données retournées
;-)



ciao
0
aLCHMEY Messages postés 6 Date d'inscription mardi 29 juin 2004 Statut Membre Dernière intervention 2 août 2005
2 août 2005 à 12:42
Ok je vais tenir compte de tes remarques merci encore.


[nabil]
0