Стандартный шаблон, используемый в библиотеке классов Scala, - это определение классов внутри классов и признаков. И большинство операций с объектами родительских классов приводят к созданию объектов этих внутренних классов. Каждый внутренний класс отличается для каждого объекта.
например. См. Исходный код scala.io.Source и LineIterator. Я думаю, что это самый простой в стандартной библиотеке.
Как указано в документах ниже, это два разных класса.
val s1:Source = ...
val s2:Source = ...
s1.getLines.getClass != s2.getLines.getClass //true if s1 != s2
Это означает, что создаются два класса.
Поскольку вся библиотека коллекции использует один и тот же шаблон, каковы эффекты в пространстве permgen для длительных процессов?