JVM的方法區和永久帶的區別和關係

2021-09-14 00:56:20 字數 826 閱讀 8057

原文這這裡:

什麼是方法區?

方法區(method area)是jvm規範裡面的執行時資料區的乙個組成部分,jvm規範中的執行時資料區還包含了:pc暫存器、虛擬機器棧、堆、方法區、執行時常量池、本地方法棧。

方法區儲存東西?

主要用來儲存class、執行時常量池、字段、方法、**、jit**等。

注意:(1)執行時資料區跟記憶體不是乙個概念。

(2)方法區是執行時資料區的一部分

(3)方法區是jvm規範中的一部分,並不是實際的實現,切忌將規範跟實現混為一談。

我們再來看下永久帶(perm區):

永久帶又叫perm區,只存在於hotspot jvm中,並且只存在於jdk7和之前的版本中,jdk8中已經徹底移除了永久帶,jdk8中引入了乙個新的記憶體區域叫metaspace。

(1)並不是所有的jvm中都有永久帶,ibm的j9,oracle的jrocket都沒有永久帶。

(2)永久帶是實現層面的東西。

(3)永久帶裡面存的東西基本上就是方法區規定的那些東西。

因此,我們可以說,永久帶是方法區的一種實現,當然,在hotspot jdk8中metaspace可以看成是方法區的一種實現。

下面我們來看下hotspot jdk8中移除了永久帶以後的記憶體結構:

結論:(1)方法區是規範層面的東西,規定了這乙個區域要存放哪些東西

(2)永久帶或者是metaspace是對方法區的不同實現,是實現層面的東西。

JVM的方法區和永久帶的關係

原文這這裡 什麼是方法區?方法區 method area 是jvm規範裡面的執行時資料區的乙個組成部分,jvm規範中的執行時資料區還包含了 pc暫存器 虛擬機器棧 堆 方法區 執行時常量池 本地方法棧。方法區儲存東西?主要用來儲存class 執行時常量池 字段 方法 jit 等。注意 1 執行時資料...

JVM的方法區和永久帶是什麼關係?

群裡面有小夥伴問到這個問題,說在網上看了很多文章,但是還是沒弄明白這倆是啥關係,下面我們就來詳細的解釋一下 什麼是方法區?方法區 method area 是jvm規範裡面的執行時資料區的乙個組成部分,jvm規範中的執行時資料區還包含了 pc暫存器 虛擬機器棧 堆 方法區 執行時常量池 本地方法棧。方...

JVM 方法區和持久代和元空間

sun oracle jdk的hotspot vm中,直到jdk7都有 持久代 permanent generation,簡稱permgen 也稱為方法區。oracle jdk8的hotspot vm去掉 持久代 以 元資料區 metaspace 替代之。方法區 邏輯上 是邏輯上的東西,是jvm的規...