作者heoris (heoris)
看板LinuxDev
标题Re: [问题] android 记忆体配置
时间Fri Jul 1 08:35:40 2011
在Android上 每执行一个APP 系统就会生一个VM 出来给这只APP用
one app per VM 一只应用程式会有自己的一个VM
而管理VM的老爸就是 zygote
zygote 利用linux fork() system call 来完成建立VM的需求
意即 当有应用程式要执行时 zygote都会利用fork来产生出所对应的新VM
您可以看fork的相关文件
只有父行程的.text section 是共用的
在fork的时候 .data stack and heap 会被复制一份出来到新的pabe table
详细的介绍可参考 Advanced Programming in the UNIX Environment
Note: .data 区间在大部分的情况下子行程并不会对此区间做写入
因此fork 采用 copy-on-wirte 机制 在没有写入需求时 .data是共用的
等有写入需求在配置记忆体
※ 引述《JUSTLOVEAYU (海费尔)》之铭言:
: 目前我知道android的架构如下:
: app
: ------
: dalvik (vm)
: ------
: linux (kernel)
: ------
: hardware
: dalvik在执行的时候,linux会把它视为一个process
: 然後为它分配4G的虚拟记忆体空间
: 现在问题来了,我想问的是当app在执行时
: 1.linux会为app再另行分配虚拟记忆体空间吗?
: 2.或者app所使用的记忆体空间为linux分配给dalvik的记忆体空间?
: 3.还是说dalvik的内部会再另外建构一块记忆体空间给app使用?
: 请前辈们多多指教
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.34.109.163
1F:→ james732:有没有什麽书籍是比较着墨於这方面?市面上Android的书几 07/01 09:04
2F:→ james732:乎都在讲AP,甚少提到比较底层的机制.... 07/01 09:04
3F:推 JUSTLOVEAYU:谢谢你的指教:) 07/01 11:14
4F:推 heidi0308:我也好想看看底层有关的东西~ 07/01 18:32
5F:→ heidi0308:目前只能看看LINUX那边的 07/01 18:32
6F:推 Gway:讲得很好 推一下 ^^ 07/04 20:29
7F:推 powertodream:最近有看到一本 大陆人写的android书本 偏底层 07/08 21:49
8F:→ powertodream:不过android更版太快, 很多东西都已经不像是书上写 07/08 21:50
9F:→ powertodream:不过还是值得一读, 天龙网页可以找到, 07/08 21:51
10F:→ powertodream:深入浅出 Android 系统原理及开发要点 07/08 21:52
11F:→ james732:楼上那本我有了,还是感谢推荐。只是想知道有没有其他XD 07/08 22:23