swap机制是什么?
swap机制是在闪存(emmc,ufs)或者磁盘上开辟一块区域,比如1GB大小,做为交换区。当内存不够使用的时候,把暂时被占用但此刻没有在使用(比如部分分配的内存块,部分缓存页)的内存暂时存放到此swap交换区,释放此部分内存供当前使用,后续交换出去的内存数据需要重新使用的时候,又重新恢复过来。最终达到的效果就是系统看起来可以使用比实际物理内存更多的内存,缺点就是内存数据的交换和恢复影响到运行的性能。
swap机制体验
测试使用的平台是mt6785+android 10,内存LPDDR4x大小2GB。
运行命令free -m如图,当前总内存是1880MB,使用了1746MB,存空闲134MB。swap分区总大小1034MB,使用了139MB,剩895MB。

内存查看
使用下面测试程序,生成一个测试命令mem_eat,通过“./mem_eat + 使用内存大小”来进行测试。

测试内存消耗程序
运行命令./mem_test 2000000,如下:

申请和使用了2000000KB,大概是1953MB内存,可以正常申请和使用。
查看当前的SWAP分区情况:

SWAP分区使用信息
SWAP分区使用由原来的139M增加到999MB,说明申请的内存有一部分在使用后被交换到swap分区中了,SWAP机制起了作用。
继续确认下,ps命令查看mem_test进程的物理地址和虚拟地址占用情况,如图:

mem_test物理地址和虚拟地址大小
物理内存使用VSZ=1444512K,大约1410MB,虚拟内存使用VSZ=2660892KB,大约2598MB,实际使用的物理内存1410MB的确比我们申请的1953MB小,这一切的幕后就是SWAP机制。
Swap机制是一种在内存不足时将内存数据暂时移动到硬盘交换区的技术,以扩展可用内存。在Android10系统和2GBLPDDR4x内存的设备上,通过测试程序观察到,当内存使用接近极限时,Swap分区的使用量增加,证明了内存交换的发生。虽然这允许系统使用超过物理内存的容量,但也会带来性能损失,因为数据交换过程较慢。
1653

被折叠的 条评论
为什么被折叠?



