永久代,方法區 和 元空間之間的關係

2021-10-08 10:36:15 字數 441 閱讀 5296

jvm記憶體結構分為 堆,方法區,棧,程式計數器,本地方法區。 這些都是邏輯記憶體區域劃分,實際上不同的

虛擬機器的實現方式是不同的,我們常用的也是普及率最高 的虛擬機器hotspot,只有他有永久代這個概念。

為什麼會移除永久代

表面上看是為了避免oom異常。因為通常使用permsize和maxpermsize設定永久代的大小就決定了永久代的上限,但是不是總能知道應該設定為多大合適, 如果使用預設值很容易遇到oom錯誤。

當使用元空間時,可以載入多少類的元資料就不再由maxpermsize控制, 而由系統的實際可用空間來控制。

更深層的原因還是要合併hotspot和jrockit的**,使用了元空間取代永久代,不用擔心執行效能問題了,在覆蓋到的測試中, 取代後程式啟動和執行速度降低不超過1%,但是這點效能損失換來了更大的安全保障。

元空間的引數配置

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

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

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

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

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

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