android:为什么即使在完成子活动后内存大小也没有减少?

时间:2011-06-29 07:40:53

标签: android memory-management

为什么即使在完成子活动后内存大小也没有减少?

我有两个活动: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,应用程序将强制关闭。

我不知道我的问题是否是愚蠢的,但我遇到了这个问题,我无法解决。

2 个答案:

答案 0 :(得分:0)

我认为这与Java和Android操作系统处理内存的方式有关。与C(和类似的开发语言)不同,Java语言(以及依赖它的Android操作系统)会自行处理垃圾。

我不会在代码中依赖它,因为它非常复杂(并且仍由操作系统决定)

您可以在此处阅读更多内容http://chaoticjava.com/posts/how-does-garbage-collection-work/

答案 1 :(得分:0)

无法强行调用GC。您应该回收视图以释放内存。