如何获取android上当前运行进程的可用内存量?或者如何以编程方式获取分配给当前进程的内存总量?
方法ActivityManager.getMemoryInfo()
在我的情况下不起作用,因为它返回自由的SYSTEM内存,但不返回进程内存。还有ActivityManager.getProcessInfo()
方法,但它返回一个旧的API结构,我不知道是否可以使用该数据检索可用内存量。
有关该方法的任何解释或者其他一些获取可用内存量的方法吗?
答案 0 :(得分:3)
您还可以使用Runtime.getRuntime().maxMemory();
以字节为单位返回进程的最大堆大小。
虽然这通常与内存类相同,但我发现当内存类返回更高的值(即24MB)并且堆大小返回更低的值(即16MB)时的情况,并且可用于进程的值是较低的一个。
答案 1 :(得分:2)
尝试以下代码:
ActivityManager activityManager = = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
MemoryInfo mi = new MemoryInfo();
activityManager.getMemoryInfo(mi);
Log.i("memory free", "" + mi.availMem);
答案 2 :(得分:1)
对我来说并不是很令人满意,但我发现ActivityManager.getMemoryClass()
会返回为应用程序分配的内存量,以兆字节为单位。
答案 3 :(得分:0)
尝试以下命令:
启动应用程序并输入以下命令
C:\Program Files\Android\android-sdk\platform-tools\adb shell dumpsys meminfo "your package name"
答案 4 :(得分:0)
Debug
类提供了许多有关进程内存使用的有用信息。您可以获取有关Dalvik堆和本机堆的信息。见http://developer.android.com/reference/android/os/Debug.html