获取android上的免费进程内存

时间:2012-10-09 16:38:05

标签: android memory memory-management

如何获取android上当前运行进程的可用内存量?或者如何以编程方式获取分配给当前进程的内存总量?

方法ActivityManager.getMemoryInfo()在我的情况下不起作用,因为它返回自由的SYSTEM内存,但不返回进程内存。还有ActivityManager.getProcessInfo()方法,但它返回一个旧的API结构,我不知道是否可以使用该数据检索可用内存量。

有关该方法的任何解释或者其他一些获取可用内存量的方法吗?

5 个答案:

答案 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