我嘗試刪除管理內存堆的對象。刪除管理java內存堆的對象
但是,它不工作。
我有緩存數據(圖像數據)。 父類是具有許多圖像數據的客戶端(類名)。 客戶端(客戶端類具有學習班名單)>>學習(學習班具有系列班名單)>>系列(系列班具有圖像班名單)>>圖像(圖像班具有圖像數據)。
我試圖某種方式(下面)
用於管理存儲器堆我除去最好父類對象。 前)客戶端:studyList.remove(鍵) - >不行
我刪除圖像數據,所有列表 前)客戶端:studyList.remove(鍵)+ seriesList.remove(鍵)+圖象 - = NULL - >不工作;
活動監視器(的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>();
圖像類具有下面:
private ArrayList<byte[]> images = new ArrayList<byte[]>();
去除代碼的圖像數據低於:
public void removeDICOMImage() {
this.logger.info(this.images);
this.images = null;
}
不.. ..工作 我怎樣才能去除存儲器堆圖像數據△φ
那麼..盛大的..父類對象將免費..兒童 - >免費??
我錯了?
釋放堆中的內容並不意味着將內存返回給操作系統。 – Henry
JVM不一定將內存釋放到操作系統。它可以保留空閒的內存以預期將來的分配(這取決於JVM實現) –
爲什麼不將對象不需要設置爲null。這將確保GC將它們從內存中移除並釋放JVM空間 –