metaspace不再與“老年代”綁定,由中繼資料虛拟機單獨管理,配置設定本地記憶體;這樣有幾個好處:
在full gc時,元空間的資料不會被掃描到;
cms中特定于permgen的複雜代碼可以移除;
metaspace可以動态增長,permgen(永久代)在運作時不可變;
在元空間中,類和其中繼資料的生命周期和其對應的類加載器是相同的;每個類加載器一塊虛拟記憶體,内部再分成不同的小塊;
元空間虛拟機管理記憶體的資料結構是連結清單,配置設定方式是分組配置設定,目前的缺點是有碎片;
記憶體分布對比
有permgen時的java記憶體分布
permgen is there
metaspace下的java記憶體分布
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>