APP內(nèi)存極限

那天在用Profiler進(jìn)行內(nèi)存分析時暇咆,想到了一個問題:一個手機(jī)對每個APP的內(nèi)存分配極限取決于什么呢?又是如何獲取的呢爸业?

老規(guī)矩扯旷,廢話不多說,直接上代碼:

        Runtime rt = Runtime.getRuntime();
        long l = rt.maxMemory();//本APP能分配的最大內(nèi)存
        long l1 = rt.freeMemory();//本APP目前剩余的內(nèi)存
        long l2 = rt.totalMemory();//本APP目前已分配的內(nèi)存
        LogUtil.loge("內(nèi)存maxMemory:"+l);
        LogUtil.loge("內(nèi)存freeMemory:"+l1);
        LogUtil.loge("內(nèi)存totalMemory:"+l2);

        ActivityManager activityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
        int memoryClass = activityManager.getMemoryClass();//系統(tǒng)為應(yīng)用分配的內(nèi)存(無擴(kuò)充)
        int largeMemoryClass = activityManager.getLargeMemoryClass();//配置AndroidManifest中l(wèi)argeHeap="true"的最大內(nèi)存
        LogUtil.loge("內(nèi)存getMemoryClass:"+memoryClass);
        LogUtil.loge("內(nèi)存getLargeMemoryClass:"+largeMemoryClass);

代碼很簡單某抓,相關(guān)api也都注釋清楚了惰瓜,下面我們分別看看有無配置AndroidManifest中l(wèi)argeHeap="true"打印結(jié)果的區(qū)別:

//配置AndroidManifest中l(wèi)argeHeap="true"
內(nèi)存maxMemory:536870912
內(nèi)存freeMemory:209992
內(nèi)存totalMemory:9461760
內(nèi)存getMemoryClass:192
內(nèi)存getLargeMemoryClass:512
—————————————————————————
//不配置AndroidManifest中l(wèi)argeHeap="true"
內(nèi)存maxMemory:201326592
內(nèi)存freeMemory:825464
內(nèi)存totalMemory:10162176
內(nèi)存getMemoryClass:192
內(nèi)存getLargeMemoryClass:512

說明:通過Runtime獲取的內(nèi)存單位的B崎坊,通過ActivityManager獲取的內(nèi)存單位是MB
所以,很快我們就發(fā)現(xiàn):

536870912=512*1024*1024
201326592=192*1024*1024

于是我們得出結(jié)論:
1)無論是否配置AndroidManifest中l(wèi)argeHeap="true"曲尸,通過ActivityManager獲取的兩個參數(shù)都是固定不變的
2)當(dāng)配置AndroidManifest中l(wèi)argeHeap="true"時另患,通過Runtime獲取的maxMemory為getLargeMemoryClass的值
3)當(dāng)不配置AndroidManifest中l(wèi)argeHeap="true"時,通過Runtime獲取的maxMemory為getMemoryClass的值
4)ActivityManager獲取的兩個參數(shù)其實是讀取/system/build.prop文件中手機(jī)內(nèi)存的配置參數(shù)昆箕,請看下圖:

模擬器的/system/build.prop

注意紅色箭頭鹏倘,其中
dalvik.vm.heapstartsize=初始分配內(nèi)存
dalvik.vm.heapgrowthlimit=getMemoryClass
dalvik.vm.heapsize=getLargeMemoryClass

以上都是用模擬器測試及查看的結(jié)果,下面我們?yōu)榱俗尳Y(jié)果更具說服力纤泵,拿臺手機(jī)來驗證一下捏题,結(jié)果如下:

內(nèi)存maxMemory:268435456
內(nèi)存freeMemory:12174780
內(nèi)存totalMemory:39548880
內(nèi)存getMemoryClass:128
內(nèi)存getLargeMemoryClass:256

手機(jī)的/system/build.prop

最后繁仁,想說明的是涉馅,雖然配置AndroidManifest中l(wèi)argeHeap="true"可以為自己的APP分配到更多的內(nèi)存,但是因為獲得更多的內(nèi)存黄虱,GC時間也將花費更多的時間稚矿,對性能存在一定的影響,所以捻浦,通過內(nèi)存優(yōu)化來達(dá)到節(jié)約內(nèi)存的目的才是王道拔畲А!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末朱灿,一起剝皮案震驚了整個濱河市昧识,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盗扒,老刑警劉巖跪楞,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缀去,死亡現(xiàn)場離奇詭異,居然都是意外死亡缕碎,警方通過查閱死者的電腦和手機(jī)咏雌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門赊抖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來氛雪,“玉大人注暗,你說我怎么就攤上這事捆昏∑罚” “怎么了寇仓?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長躺枕。 經(jīng)常有香客問我拐云,道長叉瘩,這世上最難降的妖魔是什么危彩? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮咧纠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘狱掂。我一直安慰自己趋惨,他們只是感情好器虾,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著莉掂,像睡著了一般憎妙。 火紅的嫁衣襯著肌膚如雪厘唾。 梳的紋絲不亂的頭發(fā)上抚垃,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天抡蛙,我揣著相機(jī)與錄音魂迄,去河邊找鬼捣炬。 笑死,一個胖子當(dāng)著我的面吹牛灭美,可吹牛的內(nèi)容都是我干的届腐。 我是一名探鬼主播犁苏,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼祖屏!你這毒婦竟也來了雹食?” 一聲冷哼從身側(cè)響起婉徘,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤盖呼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蟹瘾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掠手,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡众雷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年鸡岗,在試婚紗的時候發(fā)現(xiàn)自己被綠了砚婆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡个少,死狀恐怖夜焦,靈堂內(nèi)的尸體忽然破棺而出岂贩,到底是詐尸還是另有隱情萎津,我是刑警寧澤锉屈,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布遂黍,位于F島的核電站雾家,受9級特大地震影響芯咧,放射性物質(zhì)發(fā)生泄漏鹃共。R本人自食惡果不足惜霜浴,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望永丝。 院中可真熱鬧慕嚷,春花似錦喝检、人聲如沸挠说。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至崎脉,卻和暖如春拧咳,著一層夾襖步出監(jiān)牢的瞬間囚灼,已是汗流浹背骆膝。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留阅签,地道東北人蝎抽。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓政钟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親养交。 傳聞我的和親對象是個殘疾皇子灰羽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容