2

我想增加我的avd. 我Eclipse 3.7.2用于开发,当我创建(或编辑)avd 时,我将“最大 VM 应用程序堆”设置为 64MB。如果我选择详细信息,它会确认这一点,如果我检查config.ini文件,我会看到“ vm.heapSize=64”是正确的。问题是在运行 avd 时这实际上并不正确。

在我的应用程序中,我运行“ Runtime.getRuntime().maxMemory();”,显示 24MB!!!!

同样地,

ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
int memoryClass = am.getMemoryClass();

显示 24MB

更新:我注意到在 hardware-qemu.ini 中的 "vm.heapSize=24" ?我将值更改为 64,但是当我启动 avd 时它又改回 24?

更新: totalMemory() 返回 ~15MB

更新: ADT 版本为 20.0.1

更新:我已经对此进行了一系列测试,使用许多不同的设置制作了许多不同的 AVD,我可以得出的结论是 AVD 或 Eclipse 有点错误,并且通常不反映您为 AVD 输入的设置值。请注意,我制作的 AVD 设备确实反映了 vm.heapSize=64。

4

2 回答 2

1

根据这个 Google Groups question和我对文档的解释,听起来这些值仅适用于您的应用程序,而不适用于整个模拟器。

我很想知道是否totalMemory()会返回 64m。这是文档

编辑: getMemoryClass() 根据文档

返回当前设备的每个应用程序的近似内存类。

归结为我找不到任何编程方式来获取模拟器(设备)的堆大小。

编辑2:我认为您也可以在这里找到答案。- Android 如何获得设备中的总内存 RAM?

祝你好运。

于 2012-07-23T22:40:42.533 回答
0

看起来 hardware.ini 优先于您的 skins 文件夹中的 config.ini (类似于platforms\android-8\skins\WVGA800,具体取决于您选择的默认分辨率)

于 2012-09-21T20:36:54.823 回答