#查看單個應用程序最大內存限制
```
adb shell getprop|grep heapgrowthlimit
|[dalvik.vm.heapgrowthlimit]: [96m]
```
- 對于內存的限制 這里糾正一下:是 dalvik heap不能超過最大限制,跟Native heap沒有關系!
- 這個96M是單個程序限制最大內存,而meminfo 里面的dalvik heap size 的最大值若果超出了96m 那就很可能會發生OOM
- dalvik.vm.heapgrowthlimit和dalvik.vm.heapsize都是java虛擬機的最大內存限制,應用如果不想在dalvik heap達到heapgrowthlimit限制的時候出現OOM,需要在Manifest中的application標簽中聲明android:largeHeap=“true”,聲明后應用dalvik heap 達到heapsize的時候才會出現OOM!
最大限制查看:
#應用啟動后分配的初始內存
```
adb shell getprop|grep dalvik.vm.heapstartsize
|[dalvik.vm.heapstartsize]: [8m]
```
#單個java虛擬機最大的內存限制
```
adb shell getprop|grep dalvik.vm.heapsize
|[dalvik.vm.heapsize]: [384m]
```
# 關于內存
- VSS – Virtual Set Size 虛擬耗用內存(包含共享庫占用的內存)
- RSS – Resident Set Size 實際使用物理內存(包含共享庫占用的內存)
- PSS – Proportional Set Size 實際使用的物理內存(比例分配共享庫占用的內存)
- USS – Unique Set Size 進程獨自占用的物理內存(不包含共享庫占用的內存) USS 是針對某個進程開始有可疑內存泄露的情況, 是一個程序啟動了會產生的虛擬內存,一旦這個程序進程殺掉就會釋放!
- 沒錯。不過USS需要通過root的手機。一般沒有root的手機我們可以獲取PSS。而PSS的話可以通過如下命令來獲取
- 一般來說內存占用大小有如下規律:VSS >= RSS >= PSS >= USS
```
adb shell dumpsys meminfo <Package Name>|grep TOTAL
```