【发布时间】:2011-08-18 08:40:45
【问题描述】:
如果我理解正确的话,一个 android 进程有两个堆——一个由 VM 管理,一个由本机管理。
VM 堆的大小不能超过 16mb(至少,这个值在某些手机上可以更高)。
但是本机堆的最大大小呢?
16 mb 限制似乎不是硬性限制,因为应用程序可以通过 NDK 分配超过 16 mb 的空间,但是当内存量很大时,操作系统会开始杀死其他进程,可能还会杀死前台进程用来。
操作系统何时开始以这种方式运行?当原生堆 + VM 堆大小超过 16mb 时?
Debug.getNativeHeapSize() 给出了原生堆的大小,但是有没有一个函数可以检查组合的原生 + VM 堆大小?
很想听听知道这是如何工作的人的消息!
【问题讨论】:
标签: android memory memory-management android-ndk