我正在編寫一個需要測量當前空閒/使用RAM的Android應用程序。如何解釋Android上/ proc/meminfo的值?
搜索這個網站顯示多個線程主題類似通常建議兩種方法:
方法1:
MemoryInfo mi = new MemoryInfo();
ActivityManager activityManager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
activityManager.getMemoryInfo(mi);
long availableMegs = mi.availMem/1048576L;
totalMegs = mi.totalMem/1048576L; //available since API 16 only
方法2:解析的/ proc/meminfo中。
我已經嘗試了兩種方法,他們似乎工作正常。我從兩種方法中獲得相同的值。 我的問題是,當我去Settings -> Apps -> Running
在屏幕的底部是有關免費/使用的RAM的信息,這不同於我用上述方法得到的。 我懷疑Google是否將緩存的應用程序報告爲可用內存,因爲當我殺死一些緩存的進程時,Google報告的內存使用情況幾乎沒有變化,但是我的應用程序的運行量接近我剛剛殺死的正在運行的進程的大小。
例子:
方法1個輸出:
meminfo: avail: 660, total: 821, used: 161
方法2輸出:
[email protected]:/proC# cat meminfo
MemTotal: 840868 kB
MemFree: 548080 kB
Buffers: 0 kB
Cached: 128300 kB
SwapCached: 0 kB
Active: 192052 kB
Inactive: 79816 kB
Active(anon): 157792 kB
Inactive(anon): 0 kB
Active(file): 34260 kB
Inactive(file): 79816 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 143580 kB
Mapped: 67584 kB
Slab: 6736 kB
SReclaimable: 2104 kB
SUnreclaim: 4632 kB
PageTables: 4008 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 420432 kB
Committed_AS: 1606616 kB
VmallocTotal: 122880 kB
VmallocUsed: 20588 kB
VmallocChunk: 77828 kB
MemFree + Cached = 660MB
Android reported RAM usage: 679MB Free, 142MB used.
我怎樣可以得到相同的數字作爲Android的報道?
我想我必須從/proc/meminfo
得到它,因爲官方API似乎不存在。
[如何發現我的應用程序在Android中的內存使用情況]可能的重複(http://stackoverflow.com/questions/2298208/how-to-discover-memory-usage-of-my-application-in-android ) – CommonsWare
我看過 http:// stackoverflow。com/questions/2298208/how-to-discover-memory-usage-of-my-application-in-android 但它不回答我的問題。我已經查看了內存使用數據的所有資源,但無法獲取Android提供的信息。 – Raqua