给出一个包含一个具有大量实例的对象的特征(100个文件,每100行)存储在非惰性val中
trait Repository {
object dao {
val a = new A
val b = new B
val c = new C
...
}
}
初始化成本是多少?假设有100个Repository使用者,每个DAO实例一个(即“object X extends Repository”* 100)。对象X,Y,Z消费者是否会产生100 DAO实例的开销?
鉴于Repository的消费者只需要引用DAO实例的子集,我正在考虑采用延迟初始化方法,但试图看看在延迟与非延迟初始化的成本之间的权衡。
如果在JVM容器启动时,所有100个DAO实例都被初始化,那么非延迟方法将避免延迟初始化的不必要开销。但是,如果为每个Repository使用者创建了100个DAO实例,最好是延迟并减少内存使用量。
答案 0 :(得分:1)
据我所知,objects
被懒惰地初始化了。例如
trait Repository {
object dao {
val a = { println( "aqui" ); 33 }
}
}
观察:
val x = new Repository {} // pasa nada
仅限现在:
x.dao // pasa algo