3

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

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

关于这些方法的任何解释,或者可能是其他一些获取可用内存量的方法?

4

5 回答 5

3

您还可以使用Runtime.getRuntime().maxMemory();which 返回进程的最大堆大小(以字节为单位)。

尽管这通常与内存类相同,但我发现内存类返回较高值(即 24MB)而堆大小返回较低值(即 16MB)的情况,而进程真正可用的值是较低的.

于 2012-10-09T17:13:01.700 回答
2

试试下面的代码:

      ActivityManager activityManager = = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
      MemoryInfo mi = new MemoryInfo();
      activityManager.getMemoryInfo(mi);
      Log.i("memory free", "" + mi.availMem);
于 2012-10-09T16:43:07.347 回答
1

对我来说不是很满意,但我发现ActivityManager.getMemoryClass()返回分配给应用程序的内存量以兆字节为单位。

于 2012-10-09T16:56:56.640 回答
0

尝试以下命令:

启动应用程序并输入以下命令

    C:\Program Files\Android\android-sdk\platform-tools\adb shell dumpsys meminfo "your package name"
于 2012-10-09T16:40:40.217 回答
0

该类Debug提供了许多有关进程内存使用的有用信息。您可以获得有关 Dalvik 堆和本机堆的信息。请参阅http://developer.android.com/reference/android/os/Debug.html

于 2012-10-09T20:11:38.460 回答