Java 最大優勢之一是自動內存管理:運行時負責回收不再使用的對象(垃圾收集,GC),開發者無需手動釋放內存。但 GC 是複雜過程:遍歷堆、檢查不可達對象、安全刪除。GC 佔用 CPU 週期,可能在應用代碼執行中介入,導致響應時間不可預知地延長——這對實時應用是致命的。
實時應用要求在確定的、已知的延遲條件下執行代碼。GC 引入的不可預知延遲峰值直接違背此要求。
放棄 Java 的豐富生態與開發效率,顯非明智。
RTSJ 定義兩種無需 GC 的內存區域:
代價:內存管理重擔回到程序員身上(如 C/C++),易發生內存洩漏與懸空指針,開發難度大增。
重新審視 GC:核心問題是不可預知的延遲峰值。能否將其限制在可預知範圍?
例:組件對象不再需要時未從容器移除,導致對象不可回收。開發者仍需注意對象生命週期管理。
Java 實時應用內存管理的最佳路徑:約束 GC 行為使其可預知,而非放棄自動管理。這在保留 Java 生產力的同時,滿足實時系統的確定性要求。