即时编译器辅助的对象回收与空间重用及三角矩阵函数优化
即时编译器辅助的对象回收与空间重用
在编程中,对象的管理和内存的有效利用是至关重要的。这里介绍一种基于即时编译器(JIT)辅助的对象回收与空间重用方法,它主要基于GCv5-MS进行改进。
数组与递归处理
- 数组处理 :将数组的所有元素抽象为带有特殊字段的对象,对元素的访问视为对特殊字段的访问。这样做可以减少显式释放对象的大小,同时节省分析开销。
- 递归处理 :过程间分析能够处理递归情况。当遇到未分析的被调用者时,会维护一个方法调用链。若当前未分析的被调用者已存在于链中(即存在递归),则切断链中的循环,并基于当前方法摘要进行保守的过程间组合。
GCv5 - MS概述
GCv5是一个支持多个收集器协同工作的并行垃圾回收器,选择GCv5 - MS来实现显式回收和空间重用(记为JIT - GCv5 - MS),因为它使用空闲列表来组织堆空间,便于从堆中添加或获取空闲空间。
- 对象分类 :将对象分为小对象(小于1KB)和大对象(大于或等于1KB)。
- 空闲池 :提供了Free Block Pool(FBP)和Free Area Pool(FAP)分别用于这两种对象的分配。
- FBP :有254个隔离的空闲块列表,所有变异器共享。同一列表中的块提供相同大小的对象(从8B到1020B,按4B对齐)。每个块由头和数据区域组成,
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



