【问题标题】:Dalvik Memory Allocation - How to change the default limits?Dalvik 内存分配 - 如何更改默认限制?
【发布时间】:2010-06-20 05:13:39
【问题描述】:

我目前正在考虑开发一个应用程序来处理 使用 Android 操作系统的手机摄像头拍摄的图像。 在我决定去之前,我做了一些研究和 发现有一些关于内存限制的投诉 由 Dalvik VM 分配,似乎仅限于应用程序 需要对图像进行处理和处理。 如果我必须处理,我应该记住哪些限制 示例 3 用相机拍摄的照片,在我的过程中,应用 过滤器、变换和其他类型的数学运算?

我想知道是否可以更改默认值 Dalvik VM 为每个应用程序分配的内存(此默认值 是 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 更改内存分配 虚拟机从 16 MB 到 24 MB,如果有必要,甚至更大,但是 任何地方都没有提到如何做到这一点。

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

【问题讨论】:

  • 顺便说一句:在 Nexus One 上,每个应用程序的默认堆大小已经是 24 MB

标签: android


【解决方案1】:

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

【讨论】:

  • 你有关于如何修改 Dalvik 启动脚本以提高每个应用程序的默认堆大小的信息吗?手机需要root吗?我正在开发一个将与设备捆绑/分发的应用程序,我将在其中完全控制,而不是植根(尚未)。
  • 你需要对手机有完整的访问权限,修改启动脚本就是root权限。如果您有 root 访问权限 - 编辑初始化脚本(它在 root /init.rc 中)并查找“setprop ro.FOREGROUND_APP_MEM 1536”
  • 对于 Dalvik 的托管堆限制,您要编辑 vendor/[company]/[product]/system.prop 并添加或更新“dalvik.vm.heapsize=24m”。这最终出现在 /system/build.prop 中,并最终变成了 -Xmx 参数。
【解决方案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(高)形式。

【讨论】:

    【解决方案3】:

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

       setprop dalvik.vm.heapsize 128m
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-17
      • 2013-01-10
      • 2010-12-26
      • 1970-01-01
      • 2021-02-21
      • 2019-12-29
      • 2010-10-23
      • 2019-03-05
      相关资源
      最近更新 更多