如何在Android中获取当前的内存使用量?
我使用/ proc / meminfo和解析命令响应。但是它的结果显示:
MemTotal:94348 kB
MemFree:5784 kB
手段。它显示只有5MB的可用内存。 Android手机有可能吗?
我的手机上只安装了5-6个应用程序,没有其他任务正在运行。但仍然这个命令显示可用内存很少。
有人可以澄清一下吗?或者有没有其他方法在Android中获取内存?
没有找到相关结果
已邀请:
9 个回复
扦帽次杏
数字0x100000L的说明
很明显,该数字用于从字节转换为mebibyte P.S:我们只需计算一次总内存。所以在代码中只调用一次点1然后再重复调用第2点的代码。
碧肮械淌设
“usedMemInMB”变量越接近“maxHeapSizeInMB”越近,closer3ѭ越接近零,越接近OOM。 (由于内存碎片,你可能会在达到零之前获得OOM。) 这也是内存使用的DDMS工具所显示的内容。 或者,有真正的RAM使用,这是整个系统使用多少 - 看到接受的答案来计算。 更新:因为Android O使您的应用程序也使用本机RAM(至少对于Bitmaps存储,这通常是大量内存使用的主要原因),而不仅仅是堆,事情已经改变,并且您获得更少的OOM(因为堆不再包含位图,请点击此处),但如果您怀疑内存泄漏,仍应密切关注内存使用情况。在Android O上,如果你有内存泄漏,应该在旧版本上引起OOM,它似乎只会崩溃而你无法捕获它。以下是检查内存使用情况的方法:
但我相信最好使用IDE的分析器,它使用图表实时显示数据。 所以关于Android O的好消息是由于OOM存储过多的大位图而导致崩溃更加困难,但坏消息是我不认为在运行时可能会遇到这种情况。
弛保矮瘦敖
才脊烽馈低
剿畦缄饥小
命令;在我的桌面上,它报告如下信息: $ free -m 缓存的总使用的免费共享缓冲区 记忆:5980 1055 4924 0 91 374 - / + buffers / cache:589 5391 交换:6347 0 6347 +/-缓冲区/缓存:行是神奇的线,它报告说我真的有大约589兆的主动所需的进程内存,大约5391兆的“免费”内存,从91 + 374兆字节的意义上来说如果内存在其他地方可以更有利地使用,则可以丢弃缓冲区/缓存内存。 (我的机器已经运行了大约三个小时,除了stackoverflow之外什么都没做,这就是我有这么多空闲内存的原因。) 如果Android没有附带
,您可以使用
文件自行计算;我只是喜欢
输出格式。 :)
细屠截殴些
我知道Pattern.compile()是昂贵的成本,所以你可以将其代码移动到类成员。
佬棠
在android.os.Process.java里面
它从android_util_Process.cpp调用JNI方法 结论 MemoryInfo.availMem = MemFree +缓存在/ proc / meminfo中。 笔记 总内存在API级别16中添加。
草票
厘恼轨