Scalaクラスライブラリで使用される標準パターンは、クラスとトレイト内のクラスの定義です。また、親クラスのオブジェクトの操作のほとんどは、それらの内部クラスのオブジェクトが作成される結果になります。各内部クラスは、オブジェクトごとに異なります。
例:scala.io.SourceおよびLineIteratorのソースを参照してください。これは標準ライブラリの中で最も単純なものだと思います。
ドキュメントが示唆するように、以下は2つの異なるクラスです。
val s1:Source = ...
val s2:Source = ...
s1.getLines.getClass != s2.getLines.getClass //true if s1 != s2
つまり、2つのクラスが作成されます。
コレクションライブラリ全体が同じパターンを使用しているため、長時間実行されるプロセスのpermgenスペースにどのような影響がありますか?