文章预览
最近看了下art虚拟机的内存分配原理,在这里简要的分享一下。在art虚拟机里,维护了很多个空间分配内存,这些内存空间在art的源码里面被抽象成一个个Space对象。类之间的关系我从网上找了以下这张图来表示,非常清晰: Space根据内存空间是否连续分为两类: ContinuousSpace 内存空间连续,这里主要代表有两种: ImageSpace 这表示的是系统镜像的内存空间,我们一般关注不到。 CntinuiusMemMapAllocSpace 的几个子类,这些Space都是一些不同的内存分配策略,对应的则是虚拟机不同的GC策略。根据文档和一些网上可以查到的资料,我们一般也就关心 RegionSpace 和 MallocSpace。 DisContinuousSpace 内存空间不连续,主要代表就是 LargeObejctSpace (大对象) 1 小对象分配 小对象分配会根据我们的GC回收算法来指定我们的分配策略。具体的一个对应关系可以参考我整理的这个图
………………………………