过去几天我一直在阅读Android基础设施,我发现Dalvik虚拟机是基于寄存器的机器,而不是传统的基于堆栈的虚拟机。在这种情况下,dex文件的内存布局会是什么样的?在典型的C程序中,其内存布局采用数据,文本,堆和堆栈的形式。对于dex文件也是如此。如果是这样,Dalvik虚拟机如何处理这些文件?
答案 0 :(得分:0)
据我所知,Android运行在Linux内核上。因此,Linux内核负责管理物理内存。 android ART如何管理与内核的内存交互对我来说并不熟悉。但是,先验地,它应该提供Linux二进制文件(文本,数据,堆,堆栈,共享内存)所需的相同内存布局。
好吧,实际上我通过查看进程的内存映射(cat /proc/pid/maps
)得到了它的确认,为您提供了与典型Linux程序类似的内存布局,但是具有大量共享库。
答案 1 :(得分:0)
.dex格式为fully described in the official Android docs,因此您可以在那里查看。作为快速的图形介绍,annotated diagram showing a minimal "hello world" .dex file还提供了一个包含Ange Albertini的出色PDF。