Java記憶體回收

來源:互聯網
上載者:User

標籤:java記憶體回收   gc   jvm記憶體回收機制   gc介紹   java虛擬機器記憶體回收   

Java的記憶體配置與回收全部由JVM記憶體回收進程自動完成。與C語言不同,Java開發人員不需要自己編寫代碼實現記憶體回收。這是Java深受大家歡迎的眾多特性之一,能夠協助程式員更好地編寫Java程式。

關於這篇教程是系列第一部分。首先會解釋基本的術語,比如JDK、JVM、JRE和HotSpotVM。接著會介紹JVM結構和Java 堆記憶體結構。理解這些基礎對於理解後面的記憶體回收知識很重要。

Java關鍵術語
  • JavaAPI:一系列協助開發人員建立Java應用程式的封裝好的庫。
  • Java 開發套件 (JDK):一系列工具協助開發人員建立Java應用程式。JDK包含工具編譯、運行、打包、分發和監視Java應用程式。
  • JAVA 虛擬機器(JVM):JVM是一個抽象的電腦結構。Java程式根據JVM的特性編寫。JVM針對特定於作業系統並且可以將Java指令翻譯成底層系統的指令並執行。JVM確保了Java的平台無關性。
  • Java 運行環境(JRE):JRE包含JVM實現和Java API。
Java HotSpot 虛擬機器

每種JVM實現可能採用不同的方法實現記憶體回收機制。在收購SUN之前,Oracle使用的是JRockit JVM,收購之後使用HotSpot JVM。目前Oracle擁有兩種JVM實現並且一段時間後兩個JVM實現會合二為一。

HotSpot JVM是目前Oracle SE平台標準核心組件的一部分。在這篇記憶體回收教程中,我們將會瞭解基於HotSpot虛擬機器的記憶體回收原則。

JVM體繫結構

下面圖片總結了JVM的關鍵組件。在JVM體繫結構中,與記憶體回收相關的兩個主要組件是堆記憶體和記憶體回收行程。堆記憶體是記憶體資料區,用來儲存運行時的對象執行個體。記憶體回收行程也會在這裡操作。現在我們知道這些組件是如何在架構中工作的。

Java堆記憶體

我們有必要瞭解堆記憶體在JVM記憶體模型的角色。在運行時,Java的執行個體被存放在堆記憶體地區。當一個對象不再被引用時,滿足條件就會從堆記憶體移除。在記憶體回收進程中,這些對象將會從堆記憶體移除並且記憶體空間被回收。堆記憶體以下三個主要區域:

  1. 新生代(Young Generation)
    • Eden空間(Eden space,任何執行個體都通過Eden空間進入運行時記憶體地區)
    • S0 Survivor空間(S0 Survivor space,存在時間長的執行個體將會從Eden空間移動到S0 Survivor空間)
    • S1 Survivor空間 (存在時間更長的執行個體將會從S0 Survivor空間移動到S1 Survivor空間)
  2. 老年代(Old Generation)執行個體將從S1提升到Tenured(終身代)
  3. 永久代(Permanent Generation)包含類、方法等細節的元資訊

永久代空間在Java SE8特性中已經被移除。

原文連結: javapapers 翻譯: ImportNew.com - 好好先生
譯文連結: http://www.importnew.com/13504.html

Java記憶體回收

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.