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 執行時資料...