如何獲取當前正在運行的進程在Android上的可用內存量?或者如何以編程方式獲得分配給當前進程的內存總量?獲取Android上的免費進程內存
方法ActivityManager.getMemoryInfo()
在我的情況下不起作用,因爲它返回可用的系統內存,但不返回進程內存。還有ActivityManager.getProcessInfo()
方法,但它返回一箇舊的API結構,我不知道是否有可能使用該數據檢索可用內存量。
該方法的任何解釋或可能獲得大量的可用內存的其他方法?
如何獲取當前正在運行的進程在Android上的可用內存量?或者如何以編程方式獲得分配給當前進程的內存總量?獲取Android上的免費進程內存
方法ActivityManager.getMemoryInfo()
在我的情況下不起作用,因爲它返回可用的系統內存,但不返回進程內存。還有ActivityManager.getProcessInfo()
方法,但它返回一箇舊的API結構,我不知道是否有可能使用該數據檢索可用內存量。
該方法的任何解釋或可能獲得大量的可用內存的其他方法?
您也可以使用Runtime.getRuntime().maxMemory();
,它以字節爲單位返回進程的最大堆大小。
Althoug這通常與內存類相同,當內存類返回更高的值(即24MB)和堆大小返回更低的值(即16MB)時,我發現了這種情況,並且該值實際上可用於進程是較低的一個。
嘗試使用以下命令:
啓動應用程序並輸入以下命令
C:\Program Files\Android\android-sdk\platform-tools\adb shell dumpsys meminfo "your package name"
但我需要做的編程 –
我已經發布了另一個答案退房 –
可以檢查不同的其他的API爲MI也 –
試試下面的代碼:
ActivityManager activityManager = = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
MemoryInfo mi = new MemoryInfo();
activityManager.getMemoryInfo(mi);
Log.i("memory free", "" + mi.availMem);
不太satiscfactory我,但我已經發現ActivityManager.getMemoryClass()
以兆字節返回爲應用程序分配的內存量。
Debug
類提供了大量關於進程內存使用的有用信息。您可以獲取有關Dalvik堆和本機堆的信息。見http://developer.android.com/reference/android/os/Debug.html
調用Runtime.getRuntime()。freeMemory()/ 1048576L在兆字節大小。 – CoolMind