Java虛擬中記憶體分塊

來源:互聯網
上載者:User

標籤:位元組碼   範圍   img   mil   組成   方法調用   常量池   java虛擬機器   地址   

Java虛擬機器JVM(Java Virtual Machine)中記憶體分塊

  JAVA中通常分為5個地區虛擬機器棧、堆、方法區、程式計數器、本地方法區。我們一般講的是Java虛擬機器管理的四個地區虛擬機器棧、堆、方法區和程式計數器。

 

 

虛擬機器棧

虛擬機器棧通常也叫棧(stack),是有多個棧幀組成的;是線程私人的,每調用一個方法就在棧中建立一個棧幀,用於存放該方法中的局部變數等資訊。

它的生命週期與方法的生命週期一致。也就是說,當一個方法調用完成,該棧幀就被摧毀,再次調用該方法就重新在棧中開闢一個新的棧幀。這也是局部變數範圍小的體現。

 

堆(heap)是java虛擬機器管理空間最大的一塊地區,它被所有的線程共用。

存放了所有對象的資料,每個對象在堆中都有一個唯一的地址,被稱為引用,相當某些語言中的指標。

當方法在棧幀中建立一個對象時,就在堆空間中開闢一塊記憶體,分配一個地址,而棧中的對象就是存放堆中的地址,稱之為‘引用’。

堆也是Java記憶體回收行程回收的主要區域,所以也被稱為‘GC堆’。當堆中的資料不再被引用的時候,該資料就成為了垃圾,等待Java虛擬機器的記憶體回收機制回收它。

 

方法區

是將位元組碼檔案載入入Java虛擬機器時,存放的改位元組碼檔案裡的資訊,包括方法資訊、欄位資訊、常量的一些資訊等,常量所在的地區也被稱為常量區或常量池;池中的資料元素和數組的元素一樣是通過索引訪問的。

 

程式計數器

這是一個很小的地區,它存放了當先線程所啟動並執行位元組碼的行號。分支、選擇、迴圈等基礎功能都靠它實現。

在任何一個時刻,一個處理器或一個核心只會運行指令中的一行,所以每個線程的程式計數器是獨立的互不影響。

 

本地方法棧

該棧中存放的是其他語言實現的一些方法(Native方法)等資訊,不受JVM的的限制。

 

 

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.