为什么即使在完成子活动后内存大小也没有减少?
我有两个活动:first_activity和second_activity
first_activity中有一个按钮。
内存使用量为:3 MB
int usedMemory= (int)(Debug.getNativeHeapAllocatedSize() / 1048576L);
当我点击此按钮时,它将开始第二个活动。
Intent intent = new Intent(getBaseContext(),second_activity.class);
startActivityForResult(intent, 1);
到目前为止,内存使用量是:3 MB
在第二项活动中,我通过ViewFlipper显示8张图片。
然后内存使用量增加到17 MB。 按下后退键,我正在完成second_activity。
@Override
public void onBackPressed()
{
setResult(1);
finish();
System.gc();
super.onBackPressed();
}
当我从second_activity回到first_activity时,其内存使用量再次显示为17 MB。为什么它没有释放second_activity的记忆?
如果我再次尝试导航到second_activity,由于OutOfMemoryError,应用程序将强制关闭。
我不知道我的问题是否是愚蠢的,但我遇到了这个问题,我无法解决。
答案 0 :(得分:0)
我认为这与Java和Android操作系统处理内存的方式有关。与C(和类似的开发语言)不同,Java语言(以及依赖它的Android操作系统)会自行处理垃圾。
我不会在代码中依赖它,因为它非常复杂(并且仍由操作系统决定)
您可以在此处阅读更多内容http://chaoticjava.com/posts/how-does-garbage-collection-work/
答案 1 :(得分:0)
无法强行调用GC。您应该回收视图以释放内存。