安全关键 Java:任务方法与内存安全
1. 安全关键 Java 的任务方法概述
安全关键 Java(SCJ)中的任务概念是分离独立软件开发活动关注点的重要工具。任务对线程的创建、终止以及多线程间的信息共享施加了结构,简化了运行时环境,并使对资源共享进行形式化推理成为可能。将系统分层分解为多个任务的一个重要好处是能够消除后备存储内存的碎片化。
与完整的实时 Java 规范(RTSJ)相比,SCJ 更具限制性,其运行时环境也简单得多。这种简化不仅便于对应用软件进行分析,还可能提高性能。不过,还需要对 SCJ 规范的商业实现进行更多实验,以研究其是否足以表达常见的安全关键编程需求,并将其内存消耗和 CPU 效率与完整的 RTSJ 实现进行比较。虽然最新的航空电子设备认证标准为在这类系统中使用垃圾回收提供了指导,但 SCJ 将为 Java 技术在安全关键系统中提供重要的一步。
2. 安全关键 Java 的内存安全
2.1 内存管理背景
在计算机系统中,内存是关键资源。安全关键系统通常需要在有限的可用内存下长时间运行,因此程序员必须谨慎使用内存,避免编程错误。传统上,内存管理通过程序启动时的静态分配和对象池的手动管理相结合来实现。在 Java 中,虽然静态分配是可行的,但这与面向对象编程原则和最佳实践相悖。
实时 Java 规范(RTSJ)采用了一种内存管理 API,允许在程序执行期间动态分配对象,并让程序员控制内存管理的时间和成本。Java 的内存管理 API 非常简单,使用 new 关键字在堆中分配数据,在内存不足之前,会调用垃圾回收算法回收未引用的对象。在回收数据之前,会调用
超级会员免费看
订阅专栏 解锁全文

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



