J'utilise Jaxb pour analyse XML, existe-t-il des problèmes de performance ou d'utilisation de la mémoire? P>
6 Réponses :
J'ai vu que les performances peuvent être très mal touchées avec Jaxb par opposition à des mécanismes de manipulation XML plus «simples» de Java tels que les Xerces Saxparser code>
. P>
Jaxb souffre des mêmes problèmes fondamentaux que l'analyse basée sur DOM, qui est qu'en général, la structure de données de données complète est maintenue en mémoire en même temps. Cela dit, il est généralement moins affamé de mémoire qu'une API DOM (avec l'exception possible de XOM). P>
Cela dit, il existe des moyens d'utiliser Jaxb pour lire des fragments de gros documents de manière orientée par le flux, si nécessaire. C'est une utilisation assez exotique, cependant. p>
JAXB a le problème supplémentaire d'utiliser la réflexion pour créer des classes ajoutées à votre espace de permanence au fur et à mesure de son exécution. OutofMemoryError Mayhem peut s'ensuivre. P>
Beaucoup Réponse pertinente sur Nooptimize.
Une chose à conscience est que Si vous avez de très gros documents, il est possible de Traitez-les en morceaux avec JAXB . Jaxb Ri Distribution comprend un exemple de diffusion en continu avec Jaxb. P> jaxbcontext.newinstance () code> est une opération très lente. C'est là que beaucoup de réflexions et de génération de classe se produisent, conduisant à des problèmes d'espace permanent mentionnés par Duffymo. Heureusement,
jaxbcontext code> est thread-coffre-fort, il est donc correct de cache une loin et réutiliser-le . Sinon, je pense qu'il est prudent de dire que l'utilisation de la mémoire JAXB sera sur-par (ou peut-être moins) qu'une DOM totale et, bien sûr, supérieure à la SAX. p>
Vous pouvez en effet rencontrer des problèmes de performances et de mémoire avec la liaison de données Java XML en raison de la création / destruction d'objets excessives, Cet article peut aider Expliquez une nouvelle technique de liaison de données qui peut aider à éviter ces problèmes p>
Ajout ci-dessous argument JVM peut corriger ce problème (avec un léger impact sur les performances)