2011-09-06 7 views
1

特定のオブジェクトがまだメモリ内にあるかどうかを確認する方法はありますか?たとえば、GuiSearchと呼ばれるJFrameがあります。私はいくつかのメソッドを呼び出すと、それは処分されます。私はそれがまだ記憶に残っているか、それとも処分されているかを知りたい。私はjavaに新しいです。私を助けてください。メモリ内のオブジェクトを見つける方法

編集:私は何をしたいことは、特定のオブジェクトがメモリにまだあるかどうか、それがメモリ内にある場合、私はメソッドを呼び出し、それがない場合は、別のメソッドを呼び出したいことを見つけることです。

+0

なぜあなたはそれを必要としますか?周りの参照を保持し、完了してください。さらに、それは恐ろしい時間の複雑さを持っていると考えてください。 – delnan

+0

私の主要な目標は、特定のオブジェクトがまだメモリ内にあるかどうかを調べることです。メモリ内にある場合は、別のメソッドを呼び出さない場合は1つのメソッドを呼び出します。それは私がしたいことです。 –

+2

それはひどい考えです。 (1)オブジェクトが到達不能になった後、オブジェクトはメモリ内に良好に留まります。それに応じて、(特定のバージョンと種類の)ガベージコレクタの気まぐれに応じて、コードが実行されます。 (2)これがなければ、汚れたハックを導入する代わりにデザインを修正することができます。 – delnan

答えて

1

disposedは、オブジェクトによって隠されたリソースをクリーンアップすると仮定します。

参照がある限り、オブジェクトはまだメモリに残っています。どのような処理が行われたかに応じて、オブジェクトを「廃棄」していても、依然として参照があるので、メモリに残っている可能性があります。

+1

オブジェクトへの参照がなくても、かなり長い間メモリに残っている可能性があります。 – delnan

1

私はあなたがコードではなくデバッグのためにこれを行うと仮定しています。その場合、ヒープメモリをダンプし、Eclipse Memory Analyzerなどのツールを使用してチェックします。

1

これはプログラミングの慣習ではありません。メモリ内のオブジェクトを表示するには、jvisualvmを使用します。これは、Sun JDK自身で提供されます。これにより、Java仮想マシン上で動作しているJavaアプリケーションに関する詳細な情報を視覚的に表示するためのインタフェースが提供されます。