2016-06-30 7 views
2

私は配列をループし、異なるオブジェクトを作成する値に基づいています。名前のないオブジェクトを削除または参照解除する方法を知りたいと思います。名前なしでJavaのオブジェクトを破壊するには?

は、ここでそれはすべての操作(m1m2(我々はそれが呼び出されます正確にいつかわからない)後GC によって削除されます、私は

new Test(); // so now how would I delete this instance of test? 
+4

の収集ごみと呼ばれ、C/C++とは異なり、JVMはあなたのためにガベージコレクションを処理します。 'delete'やそのようなものを呼び出す必要はありません。 –

+2

Javaの仕組みに関する基本的なチュートリアルを確認してください。 –

答えて

4
new Test().m1().m2(); 
// here the previous instance may be deleted, there is no reference to `new Test()` 

何を意味するかの例ですメソッド)が実行されます。

Runtime.getRuntime().gc()(または単にSystem.gc())と呼ぶことができますが、ガベージコレクタが来るという保証はありません。

私はそれを想像できるように描こうとしました。

enter image description here

+0

しかし、私はそれをコマンドで削除することができますか? thx –

+2

javaにはそのようなものはありません。 Javaのガベージコレクションでは自動化されていますが、その制御はありません。 – praveen

+0

JVMをガベージコレクトすることはできません(大規模なハックは必要ありません)。しかし、System.gc()を使って丁寧にそれを尋ねることができます。 –

0

オブジェクトは、これまでのガベージコレクションが発生したとき、それは自動的にゴミが収集されますローカル変数である場合。

1

JavaはGCを単独で実行します。手動で行う必要はありません。

言及されたオブジェクトは、GCの資格を得るために使用されるべきではありません。 JVMは複数のスキャンを行い、これらのオブジェクトをある世代から別の世代に移動してGCの適格性を判断し、オブジェクトに到達できないときにメモリを解放します。 Javaは自動的に削除されます

1

、それはJavaでは;-)

関連する問題