Scala垃圾收集?
发布时间:2020-12-16 08:57:54 所属栏目:安全 来源:网络整理
导读:我对 Scala比较陌生. 如果我有这样的结构, sampleFile.map(line = line.map { var myObj = new MyClass(word); myObj.func();}) 我创建了一个MyClass的对象,并在类方法(func())中做了一些事情.我对文件中的所有行重复此操作(通过映射).所以,我在迭代的每一步
我对
Scala比较陌生.
如果我有这样的结构, sampleFile.map(line => line.map { var myObj = new MyClass(word); myObj.func(); }) 我创建了一个MyClass的对象,并在类方法(func())中做了一些事情.我对文件中的所有行重复此操作(通过映射).所以,我在迭代的每一步创建一个对象(对于每一行).当我开始下一次迭代时,myObj的范围将是无效的(它们会在块的末尾被销毁,还是会在内存中被孤立?).我怀疑垃圾收集何时触发?另外,在迭代的每一步创建一个对象是否昂贵?当线路数量增加到100万时,这是否有任何性能影响? 解决方法
你的对象都应该很快收集垃圾(假设myObj.func()没有在其他地方存储指向myObj的指针……).在JVM上,任何未引用的对象都应该被垃圾收集 – 一旦myObj超出范围,你对新对象的最后一次引用就会消失.
短期物品的垃圾收集通常非常便宜和有效,所以你可能不应该担心它(至少在你有基准测试/测量性能问题之前,否则……) 特别是,既然你似乎正在做IO(从示例文件读取?),那么我预计与磁盘IO操作的成本相比,GC的开销可以忽略不计. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |