2010-06-20 26 views
5

我目前正在考虑开发一款处理使用Android OS的手机相机拍摄的 图像的应用程序。 在我做出决定之前,我已经做了一些研究,发现有一些投诉关于Dalvik VM分配的内存限制 ,这似乎限制了需要操纵和处理的应用程序 图片。 我应该记住哪些限制,如果我将不得不处理 示例3使用相机拍摄的照片,在我的过程中,应用 过滤器,变换和其他类型的数学运算?Dalvik内存分配 - 如何更改默认限制?

我想知道是否有可能改变由Dalvik虚拟机为每个应用程序(此默认 为16 MB的)分配的内存 的默认值,以任何方式,采用了Android 1.6操作系统。有没有人看到 到这可以帮助我吗?

我也看到了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,甚至更大金额,如果有必要,但 它没有提到任何地方如何做到这一点。

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

+0

BTW:在Nexus One上的默认堆大小已经在每个应用 – 2010-06-20 09:41:00

回答

7

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

+0

24 MB你有如何的信息修改有关每个应用程序的默认堆大小更高的Dalvik启动脚本?手机需要根植于此吗?我正在开发一款应用程序,该应用程序将与设备一起捆绑/分发,在那里我可以完全控制,但尚未扎根(尚)。 – 2010-06-20 09:39:47

+2

你需要有一个完整的电话访问权限,修改启动脚本意味着一个根的承诺。 万一你有root权限 - 编辑init脚本(它在root/init中。RC) 并查找 “setprop ro.FOREGROUND_APP_MEM 1536” – reflog 2010-06-20 11:29:14

+4

对于的Dalvik的托管堆限制,要编辑供应商/ [公司]/[产品] /system.prop和添加或更新“dalvik.vm.heapsize =24米”。这最终在/system/build.prop中,最终变成了-Xmx参数。 – fadden 2010-06-21 23:57:56

2

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

vm.heapSize=64 

。如果没有这样的项目,您可以添加一个新项目。请注意,vm.heapSize可能会被皮肤覆盖。皮肤路径中有一个hardware.ini,它包含默认设置vm.heapSizehw.ramSize,这些设置可能会覆盖您的值。要解决此问题,您可以设置

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

数字并不重要,它必须位于(宽度)x(高度)窗体中。

1

您可以通过亚行外壳setprop更改默认的全局堆大小,例如:

setprop dalvik.vm.heapsize 128m