Après un déploiement récent dans le test du système, l'une de nos servlets était plus durement touchée que d'habitude et nous avons remarqué que la mémoire commençait à grimper et weblogic finissait par mourir. Mon stagiaire, j'étais très fier, a découvert la source de la fuite de mémoire.JAXBContext.newInstance fuite de mémoire
Chaque fois qu'une requête arrive, cette ligne est appelée:
JAXBContext jc = JAXBContext.newInstance(“ruby.oracle_servlet.schemas”);
Pour une raison quelconque, l'objet devient déchets collectés jamais. Une fois que nous l'avons rendu statique et déplacé là où nous l'avons initialisé, notre fuite de mémoire est partie.
Un autre de nos développeurs a mis juste cette ligne dans une boucle while dans l'application java autonome et a également vu la mémoire glisser vers le haut et vers le haut.
Est-ce que quelqu'un a des idées pour lesquelles cet objet n'est pas collecté?
Merci
Lien mis à jour: http://jaxb.java.net/guide/Performance_and_thread_safety.html –
@ThangPham - Merci, je l'ai mis à jour ma réponse avec le nouveau lien que vous avez fourni. –
Est-ce aussi un problème connu avec la sortie de JAXB for Java 7? La solution que vous avez donnée serait toujours valable, mais il serait bon de savoir si c'est encore quelque chose à surveiller activement. –