Android中使用的确切内存模型是什么?

时间:2014-10-05 19:34:23

标签: android memory-management garbage-collection stack heap

我很困惑Android的内存是如何构建和管理的。我想了解内存在应用程序之间划分和共享的方式。

据我所知,到目前为止,每个应用程序都分配了自己的Dalvik内存堆,它具有严格的上限。这是使用并发标记和清除垃圾收集机制来管理的。

1)我的问题是,应用程序中只使用“堆”,还是每个应用程序都有“堆栈”?我读到here每个进程都有一个堆栈和一个堆(并且复制GC在堆上工作)。这个堆栈在哪里?它用于什么?

2)链接还说CMS是在堆栈上使用的,这对我来说没有意义,因为不会通过堆栈元素顺序杀死LIFO点?在这种情况下不需要压缩吗?

3)此外,当进程共享内存(ashmem)是实现为共享堆还是共享堆栈时?

1 个答案:

答案 0 :(得分:3)

对不起,我不明白你的第三个问题,但我可以回答第一个和第二个问题:

1)每个Android应用程序都有堆栈用于内存分配,对象,例如 String 分配在,而原始变量,例如 int char 堆栈上分配

2)CMS是一种垃圾收集算法,用于自动管理上的内存。因此不能用于堆栈