我尝试删除用于管理内存堆的对象。
但是,它不是......工作。
我有缓存数据(图像数据)。 父类是具有许多图像数据的客户端(类名)。 客户(客户类别具有研究班级列表)>>研究(研究班有系列班级名单)>>系列(系列类具有图像类列表)>>图像(图像类具有图像数据)。
我尝试过某种方式(下面)
为了管理内存堆,我删除了最好的父类对象。 ex)client:studyList.remove(key) - >不工作
我删除了图片数据和所有列表 ex)client:studyList.remove(key)+ seriesList.remove(key)+ imagedata = null - >不行;
Activity Monitor(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;
}
不..工作.. 如何删除内存堆上的图像数据??
嗯..盛大的..父类对象将是免费的..儿童 - &gt;自由??
我错了?
答案 0 :(得分:0)
您可以通过System.gc()
或Runtime.gc()
调用垃圾收集器,但这并不意味着您可以释放所需的指定引用。它完全取决于JVM然后操作系统。