Scala 类库中使用的标准模式是在类和特征中定义类。并且大多数父类对象的操作都会导致这些内部类的对象被创建。每个对象的每个内部类都是不同的。
例如,查看 scala.io.Source 和 LineIterator 的源代码。我认为这是标准库中最简单的一个。
正如以下文件所建议的那样,有两个不同的类。
val s1:Source = ...
val s2:Source = ...
s1.getLines.getClass != s2.getLines.getClass //true if s1 != s2
这意味着创建了两个类。
由于整个集合库都使用相同的模式,对于长时间运行的进程,对 permgen 空间有什么影响?