一、查看內(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,英文水平不佳,準備開始翻譯