지난 며칠 동안 안드로이드 인프라 스트럭처를 읽었으며 Dalvik 가상 머신은 기존의 스택 기반 가상 머신과 달리 레지스터 기반 머신이라는 것을 알게되었습니다. 이 경우, dex 파일의 메모리 레이아웃은 어떻게 될까요? 일반적인 C 프로그램에서 메모리 레이아웃은 데이터, 텍스트, 힙 및 스택 형식입니다. 그것은 dex 파일에서도 마찬가지입니다. 그렇다면 Dalvik 가상 머신은 어떻게 그러한 파일을 처리합니까?안드로이드 dex 파일의 메모리 레이아웃
0
A
답변
0
안드로이드는 리눅스 커널에서 돌아 간다. 따라서 리눅스 커널은 물리적 인 메모리 관리를 담당한다. 안드로이드 ART가 커널과의 메모리 상호 작용을 어떻게 관리하는지는 잘 알려져 있지 않습니다. 그러나 선험적으로 리눅스 바이너리 (텍스트, 데이터, 힙, 스택, 공유 메모리)가 요구하는 것과 동일한 메모리 레이아웃을 제공해야한다. 글쎄, 실제로 프로세스의 메모리 맵 (cat /proc/pid/maps
)을 보는 것으로 확인하면 일반적인 Linux 프로그램과 비슷한 메모리 레이아웃을 갖지만 중요한 공유 라이브러리가 있습니다.