0

このコード スニペットを考えると

def doSomething() = {

    val associations : HashMap[Int, Int] = function_that_create_a_hashmap
    println("something")
}

doSomething終了すると、変数associationsの割り当てが解除されますか? その上でいくつかのデストラクタを呼び出す必要がありますか (.clearこの場合はおそらく )、またはその操作は役に立ちませんか?

4

3 に答える 3

3

.clearaを呼び出してHashMapもメモリから削除されません。既存のマッピングをクリアするだけなので、オブジェクトは引き続きメモリ内に存在します。

Scala は JVM で実行されるため、将来のある時点でガベージ コレクターによって収集されると想像できます ( への既存の参照がないことを前提としていますassociations)。JVM は独自のメモリを管理するため、プログラマはメモリを手動で管理する負担から解放されます。

于 2013-04-08T17:05:24.767 に答える
2

バインディングassociationsが作成されたスコープが存在しなくなると (特定の呼び出しがdoSomething返されると)、バインディングは存在しなくなります。これにより、 への参照が 1 つ削除されHashMap、値がなくなると、値はガベージになり、将来の不特定の時点で再利用される可能性があります (おそらく、JVM が終了する前に再利用されることはありません)。

于 2013-04-08T18:21:38.457 に答える