Art虚拟机内存抽象--heap中的空间及主要方法
我这里发布的文章,主要是一个大纲。需要阅读代码,予以佐证。算是一个引导。
所以,很多细节问题都没有讲,主要是觉得如果不去做这方面的开发,了解的太细节也没有什么用处。
有时候,把一个类的数据结构说清楚了,基本上这个类的功能,就能了解的很清楚了。所以,我这里画图,也就是这个目的
一、heap
heap类是art虚拟机中内存管理的主要部分之一。主要管理堆内存,之前所说的各种space,在这里被使用。被聚集在一起,提供内存管理的功能
如上图所示,heap中直接有13个跟space有关的引用。其中前三个是一个Vector集合,内部包含更多的space,这里面就是对象的生成位置
二、Heap分配对象的主要方法
1、TryToAllocate是分配内存空间的最终实现位置,根据不同的AllocatorType,会去不同的space上面申请内存
如下代码,就是从non_moving_space_处申请内存:
case kAllocatorTypeNonMoving:
{ ret = non_moving_space_->Alloc(self, alloc_size, bytes_allocated, usable_size, bytes_tl_bulk_allocated); break;
2、关于gc,即垃圾回收的部分。后面再说