Scala类定义对perm gen空间的影响
发布时间:2020-12-16 18:17:58 所属栏目:安全 来源:网络整理
导读:Scala类库中使用的标准模式是类和特征中的类的定义.父类对象的大多数操作都会导致创建这些内部类的对象.每个对象的每个内部类都不同. 例如 请参阅scala.io.Source和LineIterator的源代码.我认为这是标准库中最简单的一个. 正如文件所示,下面是两个不同的类.
Scala类库中使用的标准模式是类和特征中的类的定义.父类对象的大多数操作都会导致创建这些内部类的对象.每个对象的每个内部类都不同.
例如 正如文件所示,下面是两个不同的类. val s1:Source = ... val s2:Source = ... s1.getLines.getClass != s2.getLines.getClass //true if s1 != s2 意味着创建了两个类. 由于整个集合库使用相同的模式,对于长时间运行的进程,permgen空间有什么影响? 解决方法
我不确定你如何得出如果s1!= s2,那么s1.getLines.getClass!= s2.getLines.getClass.如果我使用Source.fromFile创建两个BufferedSource实例,那么当我调用getLines时,它们都将返回相同类scala.io.BufferedSource $BufferedLineIterator的实例.
scala> s1 == s2 res6: Boolean = false scala> s1.getLines.getClass == s2.getLines.getClass res7: Boolean = true 确实,Scala创建了很多类,但这是在编译时完成的,而不是运行时,所以对于长时间运行的进程来说,perm gen不应该是一个问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |