国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java實時應用程序中的內存管理

2019-11-18 11:37:05
字體:
來源:轉載
供稿:網友

  使用java的一個主要優點就是無需擔心廢棄對象,即,讓Java運行時負責Java對象的內存治理。

  這是通過讓Java運行時對不再使用的Java對象進行垃圾收集而實現的。

  垃圾收集是一個比較復雜的過程。通常,Java運行時會遍歷堆,檢查不再被其他對象引用、從而可以安全刪除的對象,然而,由于垃圾收集占用CPU周期,所以它可能會影響應用程序代碼的執行。即,假如在執行應用程序代碼的過程中執行垃圾收集,則應用程序代碼的響應時間可能延長。這會導致用戶事務延遲的延長。更為糟糕的是,因為用戶不知道何時會進行垃圾收集,因此延遲的延長是不可預知的。

  實時應用程序有嚴格的時間要求,即,它們必須在確定的、已知的延遲條件下執行應用程序代碼。因此垃圾收集所引起的不可預知的延遲延長就成為一個問題。

  那么這個問題的解決方案是什么呢?一個明顯的解決方案就是不要對實時應用程序使用Java。這是一個下下選。作為一種編程語言和一個開發平臺,Java具有許多優點。我們應該能夠解決Java中的這個問題。

  另一種解決方案是在Java中使用另一種內存治理方法來代替垃圾收集程序。RTSJ (Real-Time Specification for Java)定義了immortal memory和scoped memory的概念。不朽內存(Immortal memory)是從不進行垃圾收集的內存,只要JVM存在,它就也存在。作用域內存(Scoped memory)則是按塊分配和釋放的內存。即,用戶顯式地創建一個內存區域來存放對象,該區域中的對象將在該區域被銷毀時釋放。不管是不朽內存還是作用域內存,都不需要進行垃圾收集。不過,這也有一個缺點:治理內存的重擔又落在了用戶身上,就像C/C++應用程序一樣。這個代價仍然很高。有沒有更好的方法呢?

  我們來重新考慮一下垃圾收集。垃圾收集的主要問題是它所引起的不可預知的延遲峰值。能否避免這種不可預知的行為呢?或者,能否限制(即約束)這種不可預知的行為呢?通過更頻繁地執行垃圾收集,我們就可以限制最大延遲時間。這就是WLRT所采用的方法。因此,垃圾收集成為一項可預知的任務,具有已知的代價,從而使實時開發人員可以根據需要進行考慮和建模。而且,更為重要的是,我們沒有犧牲Java的易用性。

  注:應該注重的是,雖然有垃圾收集和其他的內存治理技術,Java程序仍然可能存在內存泄漏。例如,在下述情況下:在不需要組件對象時,卻沒有將其從容器中移除。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 光山县| 永和县| 英超| 沁阳市| 古交市| 武山县| 丹棱县| 辽阳县| 闸北区| 盐津县| 文山县| 巴马| 长岭县| 达尔| 西盟| 健康| 邳州市| 彰武县| 龙游县| 丘北县| 平武县| 东源县| 仲巴县| 吴川市| 邓州市| 平远县| 湟源县| 雷州市| 醴陵市| 兰溪市| 巴中市| 乌兰察布市| 八宿县| 郓城县| 旌德县| 应城市| 高淳县| 博罗县| 高雄市| 本溪| 宜兴市|