统计Android的内存信息

本文介绍了如何在Android系统中获取内存信息,包括通过读取/proc/meminfo、使用free命令和ActivityManager.MemoryInfo类。同时讲解了查看App内存限制的方法,如getprop、ActivityManager以及Runtime.getRuntime(),并提及Debug.MemoryInfo类用于获取应用内存详细信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

获取系统的内存信息

1、读取/proc/meminfo获取内存信息

adb shell cat /proc/meminfo

在这里插入图片描述
1.1、MemTotal:内存总数
系统从加电开始到引导完成,BIOS等要保留一些内存,内核要保留一些内存,最后剩下可供系统支配的内存就是MemTotal。这个值在系统运行期间一般是固定不变的。
1.2、MemFree:空闲内存数
表示系统尚未使用的内存。MemUsed=MemTotal-MemFree就是已被用掉的内存。
1.3、Cached:缓存区内存数
当你读写文件的时候,Linux内核为了提高读写性能与速度,会将文件在内存中进行缓存,也就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存会很少。其实这缓存内存(Cache Memory)在你需要使用内存的时候会自动释放,所以你不必担心没有内存可用。
1.4、MemAvailable:可用内存数
应用程序可用内存数。系统中有些内存虽然已被使用但是可以回收的,比如cache/buffer、都有一部分可以回收,所以MemFree不能代表全部可用的内存,这部分可回收的内存加上MemFree才是系统可用的内存,即:MemAvailable≈MemFree+Buffers+Cached,它是内核使用特定的算法计算出来的,是一个估计值。

2、使用free查询内存信息

adb shell free

在这里插入图片描述
free命令输出的total、free分别与/proc/meminfo中的MemTotal、MemFree对应。
参照free的输出结果,这里有几个计算公式:
为了直观说明,把第2行“Mem”称作OS Mem,把第三行 “buffers/cache”称作APP buffer/cache:
OS Mem total = OS Mem used + OS Mem free
APP buffers/cache used = OS Mem used - OS Mem buffers
APP buffers/cache free = OS Mem free + OS Mem buffers
APP buffers/cache total = APP buffers/cache used + APP buffers/cache free = OS Mem total

3、使用ActivityManager.MemoryInfo获取内存信息:

ActivityManager.MemoryInfo memInfo = new ActivityManager.MemoryInfo();
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
activityManager.getMemoryInfo(memInfo);
//系统内存的总大小
mTotalMemory = memInfo.totalMem;
//系统可用内存
mAvailMemory = memInfo.availMem;
//系统是否处于低内存运行
isLowMemory = memInfo.lowMemory
//当系统剩余内存低于memInfo.threshold时就是低内存运行,系统将开始kill后台服务和进程
mLowMemoryThresold = memInfo.threshold;
//app可使用的最大memory size,即getprop中的heapgrowthlimit
int mMaxMemory = activityManager.getMemoryClass();
//manifest中设置了largeHeap=true后,app可使用的最大memory size,即getprop中的heapsize
int mLargeMaxMemory = activityManager.getLargeMemoryClass()

查看App内存限制

Android app运行在vm上,而Android系统对vm heapsize做了一个硬性逻辑限制,就算物理内存富余,如果应用超出APP逻

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值