实时 Java 内存管理与嵌入式系统编程
1. 基于区域的内存管理
1.1 简化 RTSJ 作用域内存使用的方法
为了简化 RTSJ(Real-Time Specification for Java)作用域内存(ScopedMemory)的使用,一种方法是将标准 Java 程序自动转换为符合 RTSJ 限制的程序。这需要通过某种程序分析来识别动态分配对象的生命周期,从而合成作用域区域。然而,预测对象生命周期和动态内存占用是不可判定的问题,因此只能采用近似解决方案。
有两种主要的实现方式:
- 程序分析 :动态分析有助于发现可能的作用域,但由于它不能探索程序的所有可能运行情况,因此本质上是不健全的,不能安全地禁用运行时检查。
- 静态分析 :在编译时进行静态分析,为了保证分析的健全性,必须保守地近似对象生命周期和区域大小,这可能会导致作用域的生命周期过长和区域过大。不过,它可以通过关闭运行时检查来提高性能。
1.2 区域推断
1.2.1 堆图的近似计算
区域推断的起点是计算堆图的保守近似,即对象之间关系的大致情况。由于对象是运行时实体,静态分析需要借助程序的语法元素来表示它们。具体有两个近似:
- 对象与分配点绑定 :对象与创建它们的 new 语句绑定。
- 将堆视为无向图 :不考虑对象之间的指向方向,认为两个对象类是相连的。经验表明,这些近似是合理的,因为具有这种关系的对象可能具有相似的生命
超级会员免费看
订阅专栏 解锁全文
592

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



