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

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



