內(nèi)存測試

一、查看內(nèi)存大小

查看單個應(yīng)用程序最大內(nèi)存限制的方式:

1.內(nèi)存數(shù)據(jù)文件地址: android手機內(nèi)部 system/build.prop

adb pull? system/build.prop 本地路徑

打開該文件,查看對應(yīng)的內(nèi)存信息

2.另一種查看方式,使用命令行

adb shell ?getprop | grep heapgrowthlimit

得到對應(yīng)的結(jié)果

[dalvik.vm.heapgrowthlimit]: [128m]

PS:當(dāng)然adb shell? getprop 還有可以得到其他。build.prop文件中包含的數(shù)據(jù)應(yīng)該都可以獲取,還沒有具體去使用。

二、查看內(nèi)存的方式

adb shell dumpsys meminfo <package-name>

結(jié)果如下:

看到這個圖,其實都不陌生了,但是具體該看什么呢?先簡單分析下:

1.dalvik就是我們平常說的java堆,我們創(chuàng)建的對象是在這里面分配的。

2.native是被native堆使用的內(nèi)存。應(yīng)該指使用C\C++在堆上分配的內(nèi)存。

所以我們查看的大小是 dalvik heap(單位為KB,注意換算)不能超過最大限制(heapgrowthlimit)

另外一些參數(shù)含義:

Naitve Heap Size: 從mallinfo usmblks獲得,代表最大總共分配空間

Native Heap Alloc: 從mallinfo uorblks獲得,總共分配空間

Native Heap Free: 從mallinfo fordblks獲得,代表總共剩余空間

Native Heap Size 約等于Native Heap Alloc + Native Heap Free

mallinfo是一個C庫, mallinfo 函數(shù)提供了各種各樣的通過C的malloc()函數(shù)分配的內(nèi)存的統(tǒng)計信息。

Dalvik Heap Size:從Runtime totalMemory()獲得,Dalvik Heap總共的內(nèi)存大小。

Dalvik Heap Alloc: Runtime totalMemory()-freeMemory() ,Dalvik Heap分配的內(nèi)存大小。

Dalvik Heap Free:從Runtime freeMemory()獲得,Dalvik Heap剩余的內(nèi)存大小。

Dalvik Heap Size 約等于Dalvik ?HeapAlloc + Dalvik ?Heap Free

我們關(guān)注主要就是 native和dalvik的heap size,通過自動化或手工測試,查看heap size 是否處于一直增長的狀態(tài),若一直增長,可能會出現(xiàn)oom的情況。

結(jié)果分析: 可以查看 https://developer.android.com/reference/android/os/Debug.MemoryInfo.html ?具體字段意義

linux系統(tǒng)或者Android 系統(tǒng)內(nèi)存大多是共享的,所以單獨計算使用的內(nèi)存是特別困難。?

1.pss:proportional set size? Pss數(shù)字是內(nèi)核計算的衡量內(nèi)存共享的度量標(biāo)準,基本上每個頁面的RAM都是通過使用該頁面的其他進程的數(shù)量進行縮放。這樣,您可以(理論上)將所有進程中的pss加起來,以查看它們正在使用的總RAM,并比較進程之間的pss,以了解它們的相對權(quán)重。

2.private Dirty:另一個有趣的指標(biāo)是PrivateDirty,它基本上是不能被分頁到磁盤的進程內(nèi)的RAM量(它不受磁盤上相同的數(shù)據(jù)支持),并且不與任何其他進程共享。另一種看待這種情況的方法是當(dāng)該過程消失時(可能很快將其納入高速緩存和其他用途),RAM將可用于系統(tǒng)。

3.private Clean: 未找到合適的說明,猜測就屬于未使用的私有的磁盤大小

4.Swapped Dirty:未找到合適的說明,猜測交換的磁盤控件的大小

三、Memory Monitor

前提:一定是debug 的包,release的包無法查看

可參考該文章進行內(nèi)存泄漏操作查看

http://www.cnblogs.com/linguanh/p/5601232.html?

具體可查看https://developer.android.com/studio/profile/am-hprof.html?#hprof-snapshot

https://developer.android.com/studio/profile/am-allocation.html,英文水平不佳,準備開始翻譯

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,008評論 25 709
  • 本文章轉(zhuǎn)載于搜狗測試 當(dāng)軟件實現(xiàn)了新功能后,準備發(fā)布版本前,必須進行性能測試以確定沒有性能問題,內(nèi)存使用情況便是其...
    夜境閱讀 1,633評論 0 2
  • 幾個月之前看過一遍,結(jié)果過一陣子在查bitmap造成內(nèi)存泄露時又感覺忘得差不多了,不曉得android os RA...
    mrz_233333閱讀 494評論 0 0
  • 前言 微信公眾號模板消息是公眾號向用戶定向發(fā)送消息的途徑,只需要申請發(fā)送模板消息權(quán)限,擁有用戶的OPENID即可實...
    江米條二號閱讀 2,782評論 0 5
  • 兒子被他奶奶帶得很小氣,即使沒用的,也舍不得扔。 兒子四歲時,我們?nèi)グ自乒珗@玩,兒子在路邊撿到一個小手帕,起初很是...
    高天明月55閱讀 380評論 0 0

友情鏈接更多精彩內(nèi)容