我对Android内存的结构和管理方式感到困惑。我想了解内存在应用程序之间分配和共享的方式。
到目前为止,据我了解,每个应用程序都分配有自己的Dalvik内存堆,该堆有严格的上限。使用并发标记清除清除垃圾收集机制对此进行管理。
1)我的问题是,应用程序中仅使用“堆”,还是每个应用程序也都具有“堆栈”?我在这里读到,每个进程都有一个堆栈以及一个堆(复制GC可以在该堆上进行)。这个堆栈在哪里,它的用途是什么?
2)该链接还说,在堆栈上使用了CMS,这对我来说没有意义,因为不通过堆栈元素会顺序杀死LIFO吗?在这种情况下是否不需要压缩?
3)另外,当进程共享内存(ashmem)时,是将其实现为共享堆还是共享堆栈?
抱歉,我不明白您的第三个问题,但我可以回答第一个和第二个问题:
1)每个android应用程序都有一个Stack和一个用于内存分配的堆,并且诸如String之类的对象分配在Heap上,而诸如int和char之类的原始变量则分配在Stack上。
2)CMS是垃圾收集算法,其用于在自动管理存储器堆。所以它不能被用于协议栈。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句