变量在超出范围时是否已取消分配

Asl*_*986 0 scala

鉴于此代码段

def doSomething() = {

    val associations : HashMap[Int, Int] = function_that_create_a_hashmap
    println("something")
}
Run Code Online (Sandbox Code Playgroud)

doSomething终止时,系统变量associations去分配呢?我应该在它上面调用一些析构函数(.clear在这种情况下可能)或者该操作没用吗?

axe*_*l22 7

这是没有必要的 - 如果你的应用程序没有更多的引用HashMap,那么将来会在某个时候自动收集垃圾.

如果你真的有一个巨大的哈希映射,你想摆脱它以避免它的内存消耗触发GC循环doSomething完成后,你可以调用System.gc(),但这通常既不需要也不推荐的做法.

  • 实际上,对System.gc()的调用并不能保证调用GC.它被视为JVM实现的建议,它甚至可以完全忽略它. (3认同)