程序员大抄本
文章目录
记录一些三言两语能扯清楚的技术总结
JDK
jdk 1.8的元空间
基本概念
- 类的元数据,包含类的层级信息,方法数据和方法信息,运行时常量池,已确定的符号引用和虚方法表
在jdk 1.8之前
- 在过去(自定义类加载器未被‘滥用’时期),类几乎是静态的,因此被看成“永久的”
- 永久带大小由‑XX:MaxPermSize指定,一旦超过即OOM
- 永久代的垃圾回收和老年代的垃圾回收是绑定的
- 永久代中的元数据可能会随着每一次Full GC发生而进行移动
- 以上两点导致永久带难以调优
jdk 1.8
- jdk 1.8 去掉永久带,引入了元空间(Metaspace)
- 简化Full GC以及对以后的并发隔离类元数据等方面进行优化
- 不会再出现永久带OOM,但是不代表可以忽视自定义类加载器的内存泄露问题