Dalvik内存分配 - 如何更改默认限制?

时间:2010-06-20 05:13:39

标签: android

我目前正在考虑开发一个处理应用程序 使用Android OS的手机摄像头拍摄的图像。 在我做出决定之前,我做了一些研究 发现有一些关于记忆限制的抱怨 由Dalvik VM分配,似乎限制了应用程序 这需要操纵和处理图像。 如果我需要处理,我应该记住哪些限制 示例3用相机拍摄的照片,在我的过程中,应用 过滤器,变换和其他类型的数学运算?

我想知道是否可以更改默认值 Dalvik VM为每个应用程序分配的内存(此默认值 无论如何,使用Android 1.6操作系统是16 MB)。有人看了吗 这可以帮助我吗?

我还阅读了Android 2.1兼容性定义文档 (可在这里: http://static.googleusercontent.com/external_content/untrusted_dlcp/source.android.com/pt-PT//compatibility/android-2.1-cdd.pdf ) 可以通过Dalvik改变内存分配 如果有必要,VM从16 MB到24 MB甚至更大,但是 在任何地方都没有提到如何做到这一点。

如果有人之前已经调查过这些问题,可以给我一些 帮助或提示,将不胜感激。 谢谢。

3 个答案:

答案 0 :(得分:7)

在通常的设备上,您无法更改应用程序的堆限制。它们由OEM硬编码。如果您正在为可以完全控制的某些设备进行开发,则可以修改Dalvik启动脚本以允许更多堆空间。

答案 1 :(得分:2)

您可以通过更改avd的config.ini中的vm.heapSize项来更改此设置。例如,您可以写

vm.heapSize=64
config.ini中的

。如果没有这样的项目,您可以添加一个新项目。

但请注意,vm.heapSize可能会被皮肤覆盖。皮肤路径中有hardware.ini,它包含vm.heapSizehw.ramSize的默认设置,可能会覆盖您的值。要解决此问题,您可以设置

skin.path=720x1280
skin.name=720x1280

数字并不重要,必须采用(宽度)x(高度)形式。

答案 2 :(得分:2)

您可以通过adb shell setprop更改默认的全局堆大小,例如:

   setprop dalvik.vm.heapsize 128m