LILilipr 2023-04-19 09:50 采纳率: 0%
浏览 7

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的基础,后者都是依托前者的基础上实现的

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

万分感谢!

  • 写回答

2条回答 默认 最新

  • 于扶摇 2023-04-19 11:01
    关注

    您的理解是正确的,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内存管理》等。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月19日