【问题标题】:android : why the memory size is not decreasing even after finishing the sub activity?android:为什么即使完成子活动后内存大小也没有减少?
【发布时间】:2011-06-29 07:40:52
【问题描述】:

为什么子活动结束后内存大小没有减少?

我有两个活动: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 而强制关闭。

我不知道我的问题是否愚蠢,但我正面临这个问题,我无法解决。

【问题讨论】:

    标签: android memory-management


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      GC 不能被强制调用。您应该回收视图以释放内存。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-02-15
        • 1970-01-01
        • 2013-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-18
        • 2016-07-19
        相关资源
        最近更新 更多