2012-10-09 33 views
3

如何獲取當前正在運行的進程在Android上的可用內存量?或者如何以編程方式獲得分配給當前進程的內存總量?獲取Android上的免費進程內存

方法ActivityManager.getMemoryInfo()在我的情況下不起作用,因爲它返回可用的系統內存,但不返回進程內存。還有ActivityManager.getProcessInfo()方法,但它返回一箇舊的API結構,我不知道是否有可能使用該數據檢索可用內存量。

該方法的任何解釋或可能獲得大量的可用內存的其他方法?

回答

3

您也可以使用Runtime.getRuntime().maxMemory();,它以字節爲單位返回進程的最大堆大小。

Althoug這通常與內存類相同,當內存類返回更高的值(即24MB)和堆大小返回更低的值(即16MB)時,我發現了這種情況,並且該值實際上可用於進程是較低的一個。

+0

調用Runtime.getRuntime()。freeMemory()/ 1048576L在兆字節大小。 – CoolMind

0

嘗試使用以下命令:

啓動應用程序並輸入以下命令

C:\Program Files\Android\android-sdk\platform-tools\adb shell dumpsys meminfo "your package name" 
+0

但我需要做的編程 –

+0

我已經發布了另一個答案退房 –

+0

可以檢查不同的其他的API爲MI也 –

2

試試下面的代碼:

 ActivityManager activityManager = = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 
     MemoryInfo mi = new MemoryInfo(); 
     activityManager.getMemoryInfo(mi); 
     Log.i("memory free", "" + mi.availMem);