通用Java程式到實時Java程式的對象自動分類和轉化方法研究

《通用Java程式到實時Java程式的對象自動分類和轉化方法研究》是依託北京航空航天大學,由史曉華擔任項目負責人的面上項目。

基本介紹

  • 中文名:通用Java程式到實時Java程式的對象自動分類和轉化方法研究
  • 依託單位:北京航空航天大學
  • 項目負責人:史曉華
  • 項目類別:面上項目
項目摘要,結題摘要,

項目摘要

符合Real-Time Specification for Java (RTSJ)規範的實時Java程式目前已經在航空航天、工業自動化和機器人等領域得到了較廣泛的套用,但由於RTSJ規範對通用Java程式所依賴的規範,例如J2SE規範的修改和約束,使得Java程式原本具有的易於開發的部分特性遭到破壞,使得開發實時Java程式的難度和工作量遠大於開發通用Java程式,從而影響了實時Java程式更廣泛的套用。而導致這一困難的核心問題之一,來源於RTSJ規範中複雜的記憶體模型。本項目將主要研究動靜態結合的對象分析和監控方法,結合程式語義分析,可以將通用Java程式中指定實時區域內的對象自動分類並轉化為實時Java對象。本課題的研究方向在理論和實現上獲得突破後,將可以顯著提高實時Java軟體的開發效率,降低開發測試成本,具有較高的學術價值和廣泛的套用前景。

結題摘要

符合Real-Time Specification for Java (RTSJ) 規範的實時Java程式目前已經在航空航天、工業自動化和機器人等領域得到了較廣泛的套用,但由於RTSJ規範對通用Java程式所依賴的規範,例如J2SE規範的修改和約束,使得Java程式原本具有的易於開發的特性遭到破壞,導致開發實時Java程式的難度和工作量遠大於開發通用Java程式。而導致這一困難的核心問題之一,來源於RTSJ規範中複雜的記憶體模型。本項目提出了“探索建立一種從通用Java程式到實時Java程式的自動轉化方法”,來幫助程式設計師解決上述問題,提高開發效率。基於此研究目的,本項目深入研究了如何採用輕量級的profiler動態捕捉Java對象的方法和手段;本項目深入研究了通過靜態程式分析方法,如何減少和降低實時Java程式中記憶體訪問異常的運行負債;最後,本項目通過深入研究RTSJ語言模型和編程習慣,開創性的提出了一種通用Java程式到實時Java程式的對象自動分類和轉化方法。該方法首先通過一種改進的基於等價類的逃逸分析算法,得到通用Java程式中所有對象的生存範圍以及所有可能的引用關係,找到處於指定實時區域內的對象申請、回收和使用的規律;然後將初始指定的實時區域劃分為多個具有相互嵌套關係的作用域記憶體,從而將通用Java程式中堆對象自動分類和轉化為不同作用域記憶體對象,使之滿足符合RTSJ規範的實時Java平台的要求。最後根據實時區域的劃分結果對源程式進行手工轉換,即保證了實時Java程式中的實時執行緒或程式段在運行時不受垃圾回收的影響,又避免以人工方式劃分實時區域,從而促進實時Java程式開發效率的提高。該方法已在開源的實時Java虛擬機jRate0.3.7.2-3.3.3中實現,並在較為權威的實時Java基準檢查程式CDj和通用Java基準測試程式JVM98上經過測試和驗證。結果顯示經過轉化後的實時Java程式能夠在jRate平台中正確運行,證明該方法可以正確分配實時記憶體區域;該方法能夠保證轉化後實時Java程式的實時性能無損失,例如轉化後CDj程式,可以降低平均53.92%,最高73.56%的時間消耗,同時與標準CDj的時間消耗相比,波動變化在可控範圍內;同時該方法可以提高實時Java程式的記憶體利用率。

相關詞條

熱門詞條

聯絡我們