Tomcat tomcat-6.0.28 開発環境で permgen スペース OOM を追跡するために、TraceClassloading、TraceClassUnloading、および JMX モニタリングを追加しました。サーバーには、ほとんど同じフレームワークとライブラリ (Spring、Hibernate、Axis など) を持つ 3 つの Web アプリケーション (devapp1、2、3) があります。 Web アプリケーションごとに同じクラスが 2 回読み込まれます。
例 (実際のログ エントリは時間の経過とともに散らばっており、明確にするためにクラブ化されています)
[Loaded org.springframework.aop.framework.AdvisorChainFactory from file:/appl/devapp/tomcat/server/devapp/webapps/devapp3/WEB-INF/lib/spring-aop-3.0.6.RELEASE.jar]
[Loaded org.springframework.aop.framework.AdvisorChainFactory from file:/appl/devapp/tomcat/server/devapp/webapps/devapp3/WEB-INF/lib/spring-aop-3.0.6.RELEASE.jar]
[Loaded org.springframework.aop.framework.AdvisorChainFactory from file:/appl/devapp/tomcat/server/devapp/webapps/devapp2/WEB-INF/lib/spring-aop-3.0.6.RELEASE.jar]
[Loaded org.springframework.aop.framework.AdvisorChainFactory from file:/appl/devapp/tomcat/server/devapp/webapps/devapp2/WEB-INF/lib/spring-aop-3.0.6.RELEASE.jar]
[Loaded org.springframework.aop.framework.AdvisorChainFactory from
file:/appl/devapp/tomcat/server/devapp/webapps/devapp1/WEB-INF/lib/spring-aop-3.0.6.RELEASE.jar]
[Loaded org.springframework.aop.framework.AdvisorChainFactory from
file:/appl/devapp/tomcat/server/devapp/webapps/devapp1/WEB-INF/lib/spring-aop-3.0.6.RELEASE.jar]
ただし、JVisualVM の "Total Loaded" カウントは計算値 (~18700) に近いようで、重複は表示されません。MaxPermSize は 128M に設定されていましたが、サーバーを 1 日稼働させた後、現在は 119M 前後で推移しています。TraceClassLoading と JVisualVM の数が一致しない原因と、使用されている permgen スペースに重複が含まれているかどうかを確認する方法を教えてください。