Hibernate などのように JPA/ORM を使用する場合、Java Bean / POJO を定義して、それぞれの RDBMS テーブルにマップされるエンティティを表すのが一般的です。しかし、私が開発しようとしているプラットフォームでは、200,000 のそのようなエンティティをサポートする必要があります。標準の Spring MVC + Hibernate モデルを使用する必要がある場合、20 万のモデル POJO、20 万の DAO クラス、およびビューで表示可能な形式のデータを含む別の 20 万程度の JavaBean を作成することになる可能性があります。これは、Spring、Hibernate、およびその他の多くのライブラリで必要とされるクラスに加えて、約 600K の Java クラスに相当します。各 POJO モデル クラスに 10 個の String インスタンス変数と、それに対応する getter/setter があるとします。ここで、これらすべてのクラスをロードするために必要な PermGen スペースの量を知りたいと思います。
PermGen スペースのオーバーヘッドを見つける最良の方法は何ですか? クレイジーなアイデアの 1 つは、これらの 200K クラスを生成し、それらをロードし (ただし、それらのインスタンスを作成しないでください)、プロファイラーを実行して「インスタンスのないクラス」メトリックを識別し、permgen サイズを取得する方法をプログラムを作成することです。
実際、フィールド対値マップの java.util.Map だけで必要なことを実行できる、より単純なソリューションも探しています。ここで、フィールドには、RDBMS テーブル/列マッピングに関するメタデータが含まれ、JDBC CRUD ステートメントを生成します (新しいクラスのオーバーヘッドがないJOOQ.org )。
目標は、リフレクションをあまり使用せずにショーを実行し、データを運ぶだけのクラスをロードしすぎることです!!
この問題に関するヘルプは本当に感謝しています。