天天看點

Java 1.8中的Metaspace總結

metaspace不再與“老年代”綁定,由中繼資料虛拟機單獨管理,配置設定本地記憶體;這樣有幾個好處:

在full gc時,元空間的資料不會被掃描到;

cms中特定于permgen的複雜代碼可以移除;

metaspace可以動态增長,permgen(永久代)在運作時不可變;

在元空間中,類和其中繼資料的生命周期和其對應的類加載器是相同的;每個類加載器一塊虛拟記憶體,内部再分成不同的小塊;

元空間虛拟機管理記憶體的資料結構是連結清單,配置設定方式是分組配置設定,目前的缺點是有碎片;

記憶體分布對比

有permgen時的java記憶體分布

Java 1.8中的Metaspace總結

permgen is there

metaspace下的java記憶體分布

Java 1.8中的Metaspace總結

metaspace replace permgen

<a href="http://stackoverflow.com/questions/20563047/jdk-8-memory-layout-and-garbage-collection" target="_blank">jdk-8-memory-layout-and-garbage-collection</a>

<a href="http://www.infoq.com/cn/articles/java-permgen-removed#0-tsina-1-48317-397232819ff9a47a7b7e80a40613cfe1" target="_blank">java永久代去哪了</a>

<a href="http://javaeesupportpatterns.blogspot.com/2013/02/java-8-from-permgen-to-metaspace.html" target="_blank">java 8: from permgen to metaspace</a>

<a href="http://java-latte.blogspot.in/2014/03/metaspace-in-java-8.html" target="_blank">metaspace in java8</a>