如何在android中获取当前的内存使用情况?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (56)

我使用了/ proc / meminfo和解析的命令响应。但是它的结果表明:

MemTotal:94348 kB MemFree:5784 KB

有人可以澄清这一点吗?或者有任何其他方式获取内存使用情况在Android?

提问于
用户回答回答于

你可以试试这样的方法:

  1. 解析/ proc / meminfo命令。
  2. 使用下面的代码并获得当前的RAM: MemoryInfo mi = new MemoryInfo(); ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); activityManager.getMemoryInfo(mi); double availableMegs = mi.availMem / 0x100000L; //Percentage can be calculated for API 16+ double percentAvail = mi.availMem / (double)mi.totalMem * 100.0;

数字0x100000L的解释

1024 bytes      == 1 Kibibyte 
1024 Kibibyte   == 1 Mebibyte

1024 * 1024     == 1048576
1048576         == 0x100000

用户回答回答于

这取决于你想要得到什么内存查询的定义。

通常,你想知道堆内存的状态,因为如果它使用太多的内存,你会得到OOM并使应用程序崩溃。

为此,你可以检查下一个值:

final Runtime runtime = Runtime.getRuntime();
final long usedMemInMB=(runtime.totalMemory() - runtime.freeMemory()) / 1048576L;
final long maxHeapSizeInMB=runtime.maxMemory() / 1048576L;
final long availHeapSizeInMB = maxHeapSizeInMB - usedMemInMB;

扫码关注云+社区