虚拟内存分配
创始人
2024-02-18 23:54:10
0

开发 Android 应用时,并不需要我们自己去分配内存,直接 new 一个对象,声明一个变量或者常量即可,也不需要我们自己去做释放,但所有的数据都需要内存,这些都是虚拟机帮我们做。虚拟机分配申请内存主要使用的是 malloc() 函数,它是 C 语言库的一个标准函数。

void *malloc(size_t size)

malloc 函数是一个 C 语言库的函数,所以它分配内存最终还是得调用 Linux 系统提供的函数,让 Linux 内核去帮我们申请一块内存。内核会调用 mmap() 函数,在堆中分配我们想要的内存空间大小。 mmap() 函数是 Linux 系统一个很重要的函数,我们需要深刻认识它。

void *mmap(void *addr,size_t length,int prot,int flags,int fd, off_t offset);
  • 参数 addr 指向欲映射的内存起始地址,通常设为 NULL,代表让系统自动选定地址,映射成功后返回该地址;
  • 参数 length 表示将文件中多大的部分映射到内存; 参数 prot 指定映射区域的读写权限;
  • 参数 flags 指定映射时的特性,如是否允许其他进程映射这段内存;
  • 参数 fd 指定映射内存的文件描述符;
  • 参数 offset 指定映射位置的偏移量,一般为 0。

mmap 函数有 2 种用法:

1.映射磁盘文件到用户空间中;
2.匿名映射,不映射磁盘文件,而是向映射区申请一块内存,此时的 fd 入参传 -1。

第 1 种用法可以让我们读文件的效率更高(比如 Android 读取 dex 文件就是通过 mmap 来提高读取速度),也可以用来实现数据跨进程传输(比如 Android 共享内存机制、Binder 通信都是通过 mmap 来实现的)。malloc() 函数使用了 mmap 函数的第 2 种用法,即在 Heap 区域中申请一块内存。

需要注意的,这里申请的内存都是虚拟内存,并且这个时候并不会分配真正的物理内存,只有当我们真正要往这块虚拟内存区域写入数据时,操作系统检查到对应的虚拟内存没有映射到物理内存,便会发生缺页中断,然后分配一块同样大小的物理内存,并建立映射关系。这是一种懒加载技术,也是内存优化的方案之一。

相关内容

热门资讯

演员演技和剧情都优秀的剧真的很... 演员演技和剧情都优秀的剧真的很少,你们能推荐几部吗?老九门,如懿传,大江大河,山海情,亮剑等,这几部...
联通乐享卡套餐有几种? 联通乐享卡套餐有几种?“乐享卡”华泰证券官方定制的针对华泰证券用户的专属4G套餐产品。有“大乐卡”和...
小学课时作业本和53天天要哪个... 小学课时作业本和53天天要哪个好?天天练可以可以小学学霸学霸她当然突出了一个很重点的就是说肯定她学习...
天之刃里面的好的召唤兽都从哪里... 天之刃里面的好的召唤兽都从哪里弄?用元宝或等你三十级了去宠物岛捕捉。温馨提式:宠物没上六十级是不能带...
养狐为夫为什么不更新 养狐为夫为什么不更新更新了。《养狐为夫》是奋起的叶子最新写的一本悬疑灵异风格的小说,截至2022年7...
请问《穿越西元3000后》在哪... 请问《穿越西元3000后》在哪部漫画里?是在飒漫画上连载的不属于哪部,是连载于国产漫画杂志《飒漫画》...
历史上最伟大的小说 历史上最伟大的小说哪部小说能称得上历史上最伟大的小说?中国四大名著就造成影响来说,我觉得还是三国演义...
我从学长那里听说的这个组织__... 我从学长那里听说的这个组织___翻译成英语I heard about this organizati...
求那个表情:哥就是帅,ye!哥... 求那个表情:哥就是帅,ye!哥就是酷!哥的名字就是:传说!这个啊?切......
一个人的时候,为什么总想有个人... 一个人的时候,为什么总想有个人来陪伴自己?因为你自己一个人实在是太孤独了,身边既没有朋友也没有异性能...
家庭教师的小说 家庭教师的小说我有120本家教BG都是我看过觉得很好的嘛,不多说了,你看了就知道了已发
关于感恩的演讲稿 关于感恩的演讲稿7,8分钟,要很感人,小学的,别闹出初中高中甚至博士什么的啊!急急急急!!!!你多少...
有没诛仙这部电影? 有没诛仙这部电影?我看了诛仙小说后想知道有没这部电影。诛仙还没有电影!这个真-_-!`~~没有没,要...
梦幻聊斋适合新手不? 梦幻聊斋适合新手不?没玩过什么游戏的,适合不?这种类型的游戏一开始新手能玩,但是需要交朋友让别人教一...
大学里谈恋爱是应该和高年级的谈... 大学里谈恋爱是应该和高年级的谈还是和同年级的谈?本人遇到一点问题,就是高年级和同年级的两个男生都在追...
北京为什么不下雪 北京为什么不下雪今年北京不下雪?跟暖冬或者雾霾有关系吗?有的话请详细说明,谢谢。南方的暖湿空气没有到...
我想问一下,谁知道所有邓萃雯演... 我想问一下,谁知道所有邓萃雯演的电视剧或电影的名称?我想问一下,谁知道所有邓萃雯演的电视剧或电影的名...
把美丽的神话中的爱呀什么的类型... 把美丽的神话中的爱呀什么的类型改成校园的把爱改成相爱
什么叫移情易性 什么叫移情易性请求大家尽快给解答情指七情六欲,性指性格秉性.“移情”和“易性”是一个意思,都是改变性...
求一部郑伊健貌似主演的电影,有... 求一部郑伊健貌似主演的电影,有点科幻色彩的蜀山传 那个有翅膀的是 古天乐 饰演的应该是《蜀山传》吧...