Java 清空后从内存中清除图像资源

Java 清空后从内存中清除图像资源,java,memory-leaks,android-memory,hprof,eclipse-mat,Java,Memory Leaks,Android Memory,Hprof,Eclipse Mat,我有一个Android活动,需要在应用程序的生命周期中一直保存在内存中(不要问为什么)。此活动的背景占用了大约12MB的内存。我想在未查看此活动时释放此内存空间。我尝试添加以下代码 @Override protected void onPause() { setBackground(null); super.onPause(); } @Override protected void onResume() { super.onResume(); setBackg

我有一个Android活动,需要在应用程序的生命周期中一直保存在内存中(不要问为什么)。此活动的背景占用了大约12MB的内存。我想在未查看此活动时释放此内存空间。我尝试添加以下代码

@Override
protected void onPause() {
    setBackground(null);
    super.onPause();
}


@Override
protected void onResume() {
    super.onResume();
    setBackgroundResource(R.drawable.bg);
}
但这会导致内存空间仍然被分配。下面的树是通过MAT检索的,正如您所见,没有直接引用到我的应用程序本身

我怀疑位图在内存中的某个地方,正在等待gc'd,但不管出于什么原因,它从来没有这样做过

仅供参考,我还尝试了以下方法

private Drawable background;

@Override
protected void onResume() {
    background = activity.getResources().getDrawable(R.drawable.bg);
    setBackground(background);
}

@Override
protected void onPause() {
    setBackground(null);
    background = null;
}
但这导致了这种疯狂

结果是打电话

((BitmapDrawable)background).getBitmap().recycle();
清除内存中的数据,而清空对象则不会