天天看点

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>