安卓中的Dalvik堆和本地堆有什么区别?哪一个是固定的?

7

我猜Dalvik堆在安卓应用中是固定的,比如64MB,96MB等。

这样是对的吗?

如果是这样,本地堆也是固定大小的吗?还是会根据应用程序的使用而增长?

有人能帮帮我吗? 谢谢。

1个回答

5
我猜Dalvik堆在Android应用程序中是固定的,例如64MB、96MB等。对吗?
Android为应用程序提出了特定的值作为限制,基于Android版本(ActivityManager类的getMemoryClass() API将为您提供代码运行设备的值),但厂商会调整它以增加一定的空间以满足其要求(例如在支持更高屏幕分辨率的硬件情况下,更大的分辨率将使用更大的位图)。
如果是这样,本地堆也是固定大小的吗?还是会根据应用程序的使用而增长?
是的,它没有硬性限制,它会根据使用情况而增长。你可以使用设备可用的所有内存(即总内存-其他程序使用的内存)。当Android认为内存不足时,它会基于许多因素(是否在前台或为某些前台应用程序提供服务)开始终止进程。您可以使用android.app.ActivityManager.MemoryInfo获取有关设备内存的更多信息。自Android 3.0以来,应用程序可以请求更大的堆(尽管除非完全避免不可避免,否则应该避免它)。您可以通过在清单文件中使用android:largeheap="true"来增加堆大小。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接