Utilisation élevée de la mémoire lors de l'utilisation d'Hibernate

J'ai un code côté serveur de l'application avec java sur serveur linux.
J'utilise hibernate d'ouvrir la session de base de données, utilisez sql natif, à interroger et à toujours fermer cette session par un try, catch, finally.

Mon serveur de requêtes DB de l'utilisation d'hibernate avec une très haute fréquence.

J'ai déjà définir MaxHeapSize pour elle est de 3000 mais il y a généralement une utilisation de 2,7 GO de RAM, il peut diminuer, mais plus lent que de l'augmenter. Parfois, il se développer jusqu'à 3,6 GO, l'utilisation de la mémoire, plus que mon MaxHeapSize définir le moment de commencer.

Lorsque la mémoire utilisée est de 3.6 GO, j'essaie de faire un dump avec jmap commande et a obtenu un heapdump avec la taille de 1.3 GO.

Im en utilisant eclipse MAT pour l'analyser, ici, est le dominateur de l'arbre à partir de TAPIS
Utilisation élevée de la mémoire lors de l'utilisation d'Hibernate
Je pense que hibernate est le problème, j'ai tellement de org.apache.commons.les collections.carte.AbstractReferenceMap$ReferenceEntry comme ça. Il peut-être ne peut pas être jeter par la collecte des ordures ou le pouvez, mais lent.

Comment puis-je résoudre ce problème?

OriginalL'auteur Viet | 2014-06-23