我在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 票数:2 已采纳

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

该应用程序的作者正确的可能性不是很好 我会使用Hackborn女士和这个Android开发者博客文章所描述的工具。

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

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

  ask by Kasra translate from so

未解决问题?本站智能推荐:

关注微信公众号