Re: [問題] android 記憶體配置
在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
→
07/01 09:04, , 1F
07/01 09:04, 1F
→
07/01 09:04, , 2F
07/01 09:04, 2F
推
07/01 11:14, , 3F
07/01 11:14, 3F
推
07/01 18:32, , 4F
07/01 18:32, 4F
→
07/01 18:32, , 5F
07/01 18:32, 5F
推
07/04 20:29, , 6F
07/04 20:29, 6F
推
07/08 21:49, , 7F
07/08 21:49, 7F
→
07/08 21:50, , 8F
07/08 21:50, 8F
→
07/08 21:51, , 9F
07/08 21:51, 9F
→
07/08 21:52, , 10F
07/08 21:52, 10F
→
07/08 22:23, , 11F
07/08 22:23, 11F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章