Java 1.8中的Metaspace总结

简介:

知识点总结

  1. Metaspace不再与“老年代”绑定,由元数据虚拟机单独管理,分配本地内存;这样有几个好处:
    • 在full gc时,元空间的数据不会被扫描到;
    • CMS中特定于Permgen的复杂代码可以移除;
  2. Metaspace可以动态增长,Permgen(永久代)在运行时不可变;
  3. 在元空间中,类和其元数据的生命周期和其对应的类加载器是相同的;每个类加载器一块虚拟内存,内部再分成不同的小块;
  4. 元空间虚拟机管理内存的数据结构是链表,分配方式是分组分配,目前的缺点是有碎片;
  5. 内存分布对比
    • 有Permgen时的Java内存分布

      Permgen is there
    • Metaspace下的Java内存分布

      Metaspace replace permgen

阅读材料

  1. jdk-8-memory-layout-and-garbage-collection
  2. Java永久代去哪了
  3. Java 8: From PermGen to Metaspace
  4. metaspace in java8


    相关文章
    |
    6月前
    java.lang.OutOfMemoryError: Metaspace
    java.lang.OutOfMemoryError: Metaspace
    49 0
    |
    4月前
    |
    存储 Java 程序员
    Java面试题:请解释Java中的永久代(PermGen)和元空间(Metaspace)的区别
    Java面试题:请解释Java中的永久代(PermGen)和元空间(Metaspace)的区别
    208 11
    |
    6月前
    |
    Java iOS开发 MacOS
    8 种 Java- 内存溢出之四 -Metaspace
    8 种 Java- 内存溢出之四 -Metaspace
    |
    存储 消息中间件 缓存
    四万字爆肝总结java多线程所有知识点(史上最全总结)
    全文从多线程的实现方式、线程的状态、线程的方法、线程的同步、线程的通讯、等角度对多线程的基础知识进行总结
    476 1
    四万字爆肝总结java多线程所有知识点(史上最全总结)
    |
    存储 缓存 NoSQL
    新鲜出炉java后端高频面经总结-持续更新中(万字长文,助君青云)(下)
    新鲜出炉java后端高频面经总结-持续更新中(万字长文,助君青云)(下)
    321 0
    新鲜出炉java后端高频面经总结-持续更新中(万字长文,助君青云)(下)
    |
    Java API
    Java中常用API总结(5)—— Object类中的深克隆和浅克隆
    不管对象内部的属性是基本数据类型还是引用数据类型,都完全拷贝过来;基本数据类型拷贝过来的是具体的数据,引用数据类型拷贝过来的是地址值。在Object类中默认的克隆方式就是浅克隆
    193 0
    Java中常用API总结(5)—— Object类中的深克隆和浅克隆
    |
    Java API
    Java中常用API总结(4)—— Object类(含实例解读和源码阅读)
    Object类所在包是java.lang包,Object 是类层次结构的根,每个类都可以将 Object 作为超类。所有类都直接或者间接的继承自该类;换句话说,该类所具备的方法,其他所有类都继承了。
    172 0
    Java中常用API总结(4)—— Object类(含实例解读和源码阅读)
    |
    Java API
    Java中常用API总结(3)—— Runtime类(含实例解读)
    Runtime类所在包为java.lang包,因此在使用的时候不需要进行导包;并且Runtime类被public修饰了,因此该类是可以被继承的
    198 0
    Java中常用API总结(3)—— Runtime类(含实例解读)
    |
    Java API
    Java中常用API总结(2)—— System类(含实例解读)
    System类所在包为java.lang包,因此在使用的时候不需要进行导包;并且System类被final修饰了,因此该类是不能被继承的
    326 0
    Java中常用API总结(2)—— System类(含实例解读)