多数のインスタンス (100 ファイル、各 100 行) が非遅延 val に格納されているオブジェクトを含むトレイトがあるとします。
trait Repository {
object dao {
val a = new A
val b = new B
val c = new C
...
}
}
初期費用は?DAO インスタンスごとに 1 つずつ、100 のリポジトリ コンシューマがあるとします (つまり、「オブジェクト X はリポジトリを拡張します」 * 100)。オブジェクト X、Y、Z の各コンシューマーは、それぞれ 100 個の DAO インスタンスのオーバーヘッドを被りますか?
リポジトリのコンシューマーは DAO インスタンスのサブセットのみを参照する必要があることを考えると、代わりに遅延初期化アプローチを採用することを考えていますが、遅延初期化と非遅延初期化のコストの間のトレードオフが何であるかを確認しようとしています。
JVM コンテナの起動時に 100 個の DAO インスタンスがすべて初期化されている場合、非遅延アプローチは遅延初期化の不要なオーバーヘッドを回避します。ただし、Repository コンシューマごとに 100 個の DAO インスタンスが作成される場合は、遅延してメモリ使用量を削減することをお勧めします。