Я не уверен, как вы пришли к выводу, что если s1 != s2
, то s1.getLines.getClass != s2.getLines.getClass
. Если я создам два экземпляра BufferedSource
с использованием Source.fromFile
, оба будут возвращать экземпляр одного и того же класса scala.io.BufferedSource$BufferedLineIterator
, когда я вызываю getLines
.
scala> s1 == s2
res6: Boolean = false
scala> s1.getLines.getClass == s2.getLines.getClass
res7: Boolean = true
Это правда, что Scala создает много классов, но это делается во время компиляции, а не во время выполнения, поэтому perm gen не должен быть проблемой для длительных процессов.