0

给定一个特征,该特征包含一个具有大量实例(100 个文件,每 100 行)存储在非惰性 val 中的对象

trait Repository {
  object dao {
    val a = new A
    val b = new B
    val c = new C
    ...
  }
}

初始化成本是多少?假设有 100 个存储库消费者,每个 DAO 实例一个(即“对象 X 扩展存储库”*100)。对象 X、Y、Z 消费者会各自产生 100 个 DAO 实例的开销吗?

鉴于存储库消费者只需要引用 DAO 实例的子集,我正在考虑采用惰性初始化方法,但试图了解惰性初始化成本与非惰性初始化成本之间的权衡。

如果在 JVM 容器启动时,所有 100 个 DAO 实例都被初始化,那么非延迟方法将避免延迟初始化的不必要开销。但是,如果为每个 Repository 消费者创建 100 个 DAO 实例,最好是偷懒并减少内存使用。

4

1 回答 1

1

据我所知,objects都是懒惰初始化的。例如与

trait Repository {
  object dao {
    val a = { println( "aqui" ); 33 }
  }
}

观察:

val x = new Repository {}  // pasa nada

只有现在:

x.dao // pasa algo
于 2012-07-26T15:07:35.947 回答