Android内存管理

最近在看Android内存管理,查阅各种资料后感觉如下
Dalvik,ART可以用来分配和回收内存
lmk负责终止进程来进行内存的释放
kswapd也是负责内存的回收
buddy,slab是进行内存分配

我的理解是Dalvik或者ART是对应用,服务等进程的内存进行直接的管理,通过以下参数进行管理,GC是用来管理进程内部的内存回收

dalvik.vm.heapgrowthlimit=
dalvik.vm.heapstartsize=
dalvik.vm.heapsize=
dalvik.vm.heaptargetutilization=
dalvik.vm.heapminfree=
dalvik.vm.heapmaxfree=

lmk是监测整个系统的内存压力情况,满足唤醒条件后,将进程杀死,之后的回收会由kswapd线程来完成

kswapd,buddy和slab是dalvik或ART还有lmk的基础,后者都是依托前者的基础上实现的

不知道我的理解是否正确,求一个相关的解答或者文章或者书本的推荐

万分感谢!

您的理解是正确的,Dalvik和ART是Android系统中内存管理的核心组件。其中,Dalvik是用于Android应用程序的虚拟机,而ART是用于Android系统的基础虚拟机。它们都是用于管理进程内部的内存,包括分配和回收内存。

Dalvik和ART都有自己的内存管理机制,包括GC、LMK、KSWAPD等。其中,GC是用于管理进程内部的内存回收,LMK是用于监测整个系统的内存压力情况,满足唤醒条件后,将进程杀死,之后的回收会由KSWAPD线程来完成。而KSWAPD、Buddy和Slab是Dalvik和ART的基础,后者都是依托前者的基础上实现的。

如果您想深入了解Android内存管理,建议您阅读Android官方文档中关于Dalvik和ART的内存管理机制的相关章节,以及相关的技术文章和书籍,例如《Android内存管理最佳实践》、《深入理解Android内存管理》等。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    抱歉,我需要更具体的问题来提供解决方案。请提供一个具体的问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^