糖果粉碎记忆分配 - 大堆?

时间:2014-04-19 22:27:20

标签: android memory

我在onCreate()方法中使用了以下代码:

        ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
        Log.d("test", "Memory Class=" + am.getMemoryClass());
        int maxMB = (int) ((Runtime.getRuntime().maxMemory() / 1024) / 1024);
        Log.d("test", "Memory maxMB=" + maxMB);
        int totalMB = (int) ((Runtime.getRuntime().totalMemory() / 1024) / 1024);
        Log.d("test", "Memory totalMB=" + totalMB);

导致: 内存类:96MB, 最大内存:96MB, 总内存:15MB,

然后我安装了一个应用程序,显示"运行"应用程序和我发现Candy Crush使用175 MB,这比我的最大值(96MB)大。这怎么可能?这是否意味着他们使用" largeHeap = true"在清单?我所知道的是,Android官方网站严格禁止开发人员使用此标志。

1 个答案:

答案 0 :(得分:2)

  

然后我安装了一个应用程序,显示“运行”应用程序消耗的内存,我发现Candy Crush使用175 MB,这比我的最大值(96MB)大。

该应用的作者正确行事的可能性are not very good。我会使用Hackborn女士和this Android Developers Blog post所描述的工具。

  

这怎么可能?这是否意味着他们在清单中使用“largeHeap = true”?

这是一种可能性。他们的应用程序也可能不是基于Java - 游戏引擎通常使用NDK实现,NDK分配不受Dalvik堆限制。