メモリヒープを管理するオブジェクトを削除しようとしました。Javaでメモリヒープを管理するためのオブジェクトを削除する
しかし、動作していません。
私はキャッシュデータ(画像データ)を持っています。 親クラスは、多くの画像データを持つクライアント(クラス名)です。 クライアント(クライアントクラスには学習クラスリストがあります)>>学習(学習クラスにはクラスクラスリストがあります)>>シリーズ(シリーズクラスには画像クラスリストがあります)>>画像(画像クラスには画像データがあります)
私は最高の親クラスのオブジェクトを削除する(下記)
メモリヒープを管理するためのいくつかの方法を試してみました。 例)クライアント: - : - )(キーstudyList.remove + seriesList.remove(キー)+画像データ= NULL)(キーstudyList.removeは>私は、画像データを削除し、すべてのリスト EX)クライアント
に動作しません>動作しません。
アクティビティモニタ(のMacbook)Javaのメモリヒープが無料ではありません示してい..
クライアントクラス下にあります。
private HashMap<Integer, Study> StudyListByKey = new HashMap<Integer, Study>();
研究クラス以下があります。
private HashMap<Integer, Series> SeriesListByKey = new HashMap<Integer, Series>();
シリーズクラスは以下のとおりです:
private HashMap<Integer, Image> ImageListByKey = new HashMap<Integer, Image>();
の
Imageクラスは以下があります:
private ArrayList<byte[]> images = new ArrayList<byte[]>();
は、コードの画像データを削除する以下の通りです:
public void removeDICOMImage() {
this.logger.info(this.images);
this.images = null;
}
ない...仕事... がどのようにメモリヒープ上の画像データを削除できますか?
まあ、壮大な..親クラスのオブジェクトは無料です..子供 - >無料??
私は間違っていますか?
ヒープ内の何かを解放しても、メモリがOSに返されるわけではありません。 – Henry
JVMは必ずしもオペレーティングシステムにメモリを解放しません。将来の割り当てを想定して空きメモリーを保持する可能性があります(JVM実装に依存します) –
nullにする必要のないオブジェクトを設定しないのはなぜですか。これにより、GCがメモリから解放され、フリーのJVMスペース –