Java運行時的內存模型

原標題爲:JVM Run-Time Data Areas數組

參考下圖:jvm



每一個線程單獨的數據區(線程間不共享)

每一個線程都有一片單獨的內存區域,這裏麪包含:程序計數器(program counter register),JVM棧和本地方法棧(Native Method Stack)。當一個新的線程被建立的時候,這片內存就已經被分配出來了。

程序計數器:爲了線程切換後能恢復到正確的執行位置,每條線程都須要有一個獨立的程序計數器,各線程之間的計數器互不影響,獨立存儲。
JVM棧:其結構以下圖所示:



本地方法棧:用來支持本地方法的調用,即非Java代碼。

全部線程共享的數據區

堆區和方法區被全部線程所共享。

堆區:這是咱們最經常使用的區域,用來存儲數組和對象,JVM啓動的時候這部份內存就存在了。垃圾收集器(GC)就在這個區域裏工做。

方法區:用來存儲運行時常量池( run-time constant pool )。

運行時常量池:是每個類或接口常量表現形式,包括若干種常量:包括從編譯期可知的值和解析運行才知道的值。

棧由幀組成,當一個方法被調用時,相應的幀就會被壓到棧中。幀中存放了本地變量、操做數棧和指向常量池的引用。

相關文章
相關標籤/搜索