私は、約 2100 のテーブルを持つデータベース モデルを持つ大規模な ERP プロジェクトに取り組んでいます。Hibernate でマップされた「わずか」500 個のテーブルでは、Web サーバーにデプロイされたアプリケーションは約 3GB の作業メモリを必要とします。
1 つの永続化ユニットで多くのテーブルを使用する場合、Hibernate のメタモデルのメモリ フットプリントを削減する方法はありますか? それとも、ORM をあきらめて、単純な古い JDBC (またはjOOQ ) を使用する必要がありますか?
現在、Hibernate 4.1.8、Spring 3.1.3、JBoss AS 7.1 を使用しており、MSSQL データベースで作業しています。
編集:
JavaMelody メモリ ヒストグラム出力- 2000 個のテスト テーブルが生成され、元の db モデルよりもスコープが少し小さくなっています (したがって、消費メモリは 1.3GB のみです)。
編集2:
Java MAT ヒープ分析: