android中dalvik堆和本机堆有什么区别?哪一个是固定的.?

use*_*126 6 memory android memory-management android-memory

我猜Dalvik堆是固定的Android应用程序.像64MB,96MB等

这样对吗 ?.

如果是这样,本机堆也固定为某种大小?或将根据应用程序的使用增长?

有人可以帮帮我吗?谢谢.

Unc*_*ion 5

我猜Dalvik堆是固定的Android应用程序.像64MB,96MB等.
是不是?

Android为应用程序提供了一个特定的值,因为基于Android版本的限制(getMemoryClass()ActivityManager类的API将为您的代码运行的设备提供价值),但供应商调整它以增加适合其要求的保证金(例如,在硬件支持更高屏幕分辨率的情况下,因为更大的分辨率将使用更大的位图).

如果是这样,本机堆也固定为某种大小?或将根据应用程序的使用增长?

是的,根据使用情况,它没有硬限制.您可以使用设备可用的内存(即总内存 - 其他程序使用的内存).当Android认为内存不足时,那么基于许多因素(无论它是否在前台,或者为某些前台应用程序提供服务),它将开始杀死进程.您可以使用获取有关设备内存的更多信息 android.app.ActivityManager.MemoryInfo.此外,自Android 3.0以来,应用程序可以请求更大的堆(虽然,除非完全不可避免,否则应该避免使用它).您可以android:largeheap="true"在清单文件中使用来增加堆大小