删除用于在java中管理内存堆的对象

时间:2017-05-04 07:05:03

标签: java memory-management heap-memory

我尝试删除用于管理内存堆的对象。

但是,它不是......工作。

我有缓存数据(图像数据)。 父类是具有许多图像数据的客户端(类名)。 客户(客户类别具有研究班级列表)>>研究(研究班有系列班级名单)>>系列(系列类具有图像类列表)>>图像(图像类具有图像数据)。

我尝试过某种方式(下面)

  1. 为了管理内存堆,我删除了最好的父类对象。 ex)client:studyList.remove(key) - >不工作

  2. 我删除了图片数据和所有列表 ex)client:studyList.remove(key)+ seriesList.remove(key)+ imagedata = null - >不行;

  3. 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;自由??

    我错了?

1 个答案:

答案 0 :(得分:0)

您可以通过System.gc()Runtime.gc()调用垃圾收集器,但这并不意味着您可以释放所需的指定引用。它完全取决于JVM然后操作系统。