2009-07-20 17 views
1

たとえば、プロジェクトに約80のドメインがあるかどうかを知りたいのですが、プロジェクトを実行すると80個のドメインがメモリにロードされるか、そのドメインが必要なときにロードされます。多くのドメイン=メモリの使用量は多いですか?

1つのプロジェクトに多数のドメインがあると、自動コンパイルを無効にしてperm genのスペースを増やす必要があります。

これらのドメインにアクセスする必要があるときにロードするソリューションはありますか? すべてのドメインが使用されるわけではありません...ユーザーがほとんど何も触れていない小さなドメイン(たぶん特別なケース)

私は現在grails 1.1.1を使用していますが、ドメイン用にコンパイルすると、メモリ/メモリのgen spaceがスタックして空になります。

答えて

2

GrailsはHibernateにバックアップされており、起動時にはコンフィグレーション内のすべてのドメインクラスをロードする必要があるため、ドメインの一部のみを読み込みます。

PermGenを増やすのは、特に開発では普通です。デフォルトは64MBで、Grailsが内容を再コンパイルしてアプリケーションを再起動すると、クラスファイルがすぐにアンロードされないからです。

warファイルから実行しているときに似たようなメモリ使用率がありますか?

+0

まだありません。私はpermのgen spaceを300MBに増やし、自動コンパイルを無効にしました。したがって、ドメインに何か/変更を加えると、私はgrailsを再起動する必要があります。 btwなぜHibernateは最初からすべてをロードする必要がありますか? javaもアプリケーションを起動している間にすべてのクラスをロードしますか? – nightingale2k1

+0

設定を確認して必要なプロキシを事前に生成できるように、すべてのドメインクラスをロードする必要があるのは休止状態です –

0

開発モードで実行しているときにこの問題にぶつかりますか?そうであれば、開発モードのデータソースをメモリ内のHSQLDBデータベースからファイルベースのHSQLDBデータベースに変更することができます。 grails-app/conf/DataSource.groovyで編集する必要があるファイルを見つけることができます

+0

私はmysqlを使用しており、開発モードで実行しました。 – nightingale2k1

関連する問題