我在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官方网站严格禁止开发人员使用此标志。
答案 0 :(得分:2)
然后我安装了一个应用程序,显示“运行”应用程序消耗的内存,我发现Candy Crush使用175 MB,这比我的最大值(96MB)大。
该应用的作者正确行事的可能性are not very good。我会使用Hackborn女士和this Android Developers Blog post所描述的工具。
这怎么可能?这是否意味着他们在清单中使用“largeHeap = true”?
这是一种可能性。他们的应用程序也可能不是基于Java - 游戏引擎通常使用NDK实现,NDK分配不受Dalvik堆限制。