使用可能なヒープ領域 (Old Gen) を非常に急速に使い切ってからクラッシュする Tomcat サーバーにデプロイされた Web サイトがあります。ヒープダンプを取得したとき、ほとんどの (すべてではないにしても) スペースのほとんどが、多くの org.hibernate.impl.SessionFactoryImpl インスタンス (541mb のキープアライブサイズで正確には 802) によって占有されていることがわかりました (org から参照) .apache.catalina.loader.WebappClassLoader -> java.util.concurrent.ConcurrentHashMap$HashEntry)
サーバーについて サーバーは、proxypass を使用して apache2 によってプロキシされる tomcat 6 です。
ソフトウェアについて私は opencms を使用して webapp のコンテンツを管理しています。そのため、すべてのコードはそのテンプレート クラスを介して呼び出され、Hibernate にはスプリング HibernateTemplate を使用してアクセスします。データ ソースは tomcat に保持され、org.springframework.jndi.JndiObjectFactoryBean を介してアクセスされ、私のデータ ソース (org.apache.commons.dbcp.BasicDataSource) に注入されます。セッション ファクトリは次のように構成されます。
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="annotatedClasses">
<list><value>com.someobjects.SomeObject</value>
</list>
</property>
org.hibernate.impl.SessionFactoryImpl がガベージ コレクションされない理由を知っている人はいますか?
必要な追加情報を提供できます... 私は本当にこれで途方に暮れています. どんな助けでも大歓迎です。