Lea*_*ner 10 garbage-collection jvm memory-management scala
我对Scala比较陌生.
如果我有这样的结构,
sampleFile.map(line => line.map {
var myObj = new MyClass(word);
myObj.func();
})
Run Code Online (Sandbox Code Playgroud)
我MyClass在类method(func())中创建了一个对象并做了一些事情.我对文件中的所有行重复此操作(直通map).所以,我在迭代的每一步创建一个对象(对于每一行).myObj当我开始下一次迭代时,它的范围是无效的(它们会在块的末尾被销毁,还是会在内存中被孤立?).我怀疑垃圾收集何时触发?此外,在迭代的每一步创建一个对象是否昂贵?当线路数量增加到100万时,这是否有任何性能影响?
你的对象都应该很快收集垃圾(假设myObj.func()没有在其他地方存储指向myObj的指针......).在JVM上,任何未引用的对象都应该被垃圾收集 - 一旦myObj超出范围,您对新对象的最后引用就会消失.
短期物品的垃圾收集通常非常便宜和有效,所以你可能不应该担心它(至少在你有基准测试/测量性能问题之前,否则......)
特别是,既然你似乎正在做IO(从示例文件中读取?),那么我预计与磁盘IO操作的成本相比,GC的开销可以忽略不计.
| 归档时间: |
|
| 查看次数: |
9741 次 |
| 最近记录: |