ActivityManagerService中收集可用内存getMemoryInfo的实现

ActivityManagerService的getMemoryInfo方法通过JNI调用android_os_Process_getFreeMemory来获取内存信息,主要依据/proc/meminfo文件,关注MemFree和Cached的总和。这个过程涉及到内存统计、文件读取以及内核数据的解析。

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

原型: 

ActivityManagerService.java

public void getMemoryInfo(ActivityManager.MemoryInfo  outInfo)

                            ---------->Process.getFreeMemory()   //Process.java

                                                          JNI实现  ------------->android_os_Process_getFreeMemory( ) //android_until_Process.cpp

                                                                                                                           ---------------> open("/proc/meminfo", O_RDONLY);

 可见其数据来源于/proc/meminfo文件,该文件包含了有关内存的许多不同类型的统计信息,这里只收集了其中两项的和。即MemFree + Cached

MemTotal:         995092 kB
MemFree:          412324 kB
Buffers:           67372 kB
Cached:           218692 kB
SwapCached:            0 kB
Active:           254272 kB
Inactive:         182248 kB
Active(anon):     150656 kB
Inactive(anon):      304 kB
Active(file):     103616 kB
Inactive(file):   181944 kB
Unevictable:         360 kB
Mlocked:             360 kB
HighTotal:        120836 kB
HighFree:            240 kB
LowTotal:         874256 kB
LowFree:          412084 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 4 kB
Writeback:             0 kB
AnonPages:        150856 kB
Mapped:           131816 kB
Shmem:               348 kB
Slab:              19168 kB
SReclaimable:       9248 kB
SUnreclaim:         9920 kB
KernelStack:        3432 kB
PageTables:         3316 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      497544 kB
Committed_AS:    2186448 kB
VmallocTotal:     122880 kB
VmallocUsed:       64980 kB
VmallocChunk:      18436 kB
DirectMap4k:       24568 kB
DirectMap4M:      884736 kB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值