12
如果我理解正確,一個android進程有兩個堆 - 一個由VM和一個本機管理。Android上本機堆的最大大小?
VM堆的大小不能超過16mb(至少在某些電話上該值可能更高)。
但是本地堆的最大大小呢?
16 MB的限制似乎不是一個硬性限制,因爲應用程序可以通過NDK分配超過16MB,但操作系統將開始殺死其他進程以及可能的前臺進程,以及大量內存被使用。
什麼時候操作系統啓動這樣的行爲?當本地堆+ VM堆大小超過16MB時?
Debug.getNativeHeapSize()給出了本機堆的大小,但是有沒有函數來檢查組合的native + VM堆大小?
好奇聽到誰知道這是如何工作的人!
好的,這是有道理的。一個猜測是,16MB + X的總內存使用率會導致進程冒着被殺死的風險,即使它在前臺。操作系統版本等X的大小可以不同 – Viktor 2011-05-06 12:22:04