Java8 Non-Heap 中的metaspace 和compressed class space解释
来源:互联网 发布:网络分频器 编辑:程序博客网 时间:2024/05/21 21:37
在对java jvm进行性能监控时,发现了两个新名词Meta space和compressed class space ,通过查阅一些资料下面进行一下总结。
元空间(metaspace)这是在java8才出现的新概念,在java6中堆结构如下图:
持久代中存的内容
1. JVM中类的元数据在Java堆中的存储区域。
2. Java类对应的HotSpot虚拟机中的内部表示也存储在这里。
3. 类的层级信息,字段,名字。
4. 方法的编译信息及字节码。
5. 变量
6. 常量池和符号解析
GC是可以对持久代进行垃圾收集的
然而在java8中把持久代(Permanent Generation)移除了替代品就是元空间(Meta space)
元空间的特点:
- 充分利用了Java语言规范中的好处:类及相关的元数据的生命周期与类加载器的一致。
- 每个加载器有专门的存储空间
- 只进行线性分配
- 不会单独回收某个类
- 省掉了GC扫描及压缩的时间
- 元空间里的对象的位置是固定的
- 如果GC发现某个类加载器不再存活了,会把相关的空间整个回收掉
下图是JVM是如何给元数据分配虚拟内存的空间的
你可以看到虚拟内存空间是如何分配的(vs1,vs2,vs3) ,以及类加载器的内存块是如何分配的。CL是Class Loader的缩写。
说了这么多,如果不理解的话,一句话就是优化了性能
然后再来看Compressed class space
先看一副图:
JVM中,每个对象都有一个指向它自身类的指针,不过这个指针只是指向具体的实现类,而不是接口或者抽象类。
对于32位的JVM:
_mark : 4字节常量
_klass: 指向类的4字节指针 对象的内存布局中的第二个字段( _klass,在32位JVM中,相对对象在内存中的位置的偏移量是4,64位的是8)指向的是内存中对象的类定义。
64位的JVM:
_mark : 8字节常量
_klass: 指向类的8字节的指针
对于64位平台,为了压缩JVM对象中的_klass指针的大小,引入了类指针压缩空间(Compressed Class Pointer Space)。
就是为了省内存
看下面这幅图就秒懂了:
OK到这里这两个概念应该理解了
注:本文一些内容粘贴自Java 8 的元空间
这里图片看不出,阅读起来比较困难,所以进行一个总结
author 王晨
- Java8 Non-Heap 中的metaspace 和compressed class space解释
- Permanent Space 和 Heap Space
- Java中的static Class和non static Class
- java heap space 和PermGen space
- Ascensor.js中的non-break space
- Java8内存模型—永久代(PermGen)和元空间(Metaspace)
- Java8内存模型—永久代(PermGen)和元空间(Metaspace)
- Java8内存模型—永久代(PermGen)和元空间(Metaspace)
- Java8内存模型—永久代(PermGen)和元空间(Metaspace)
- Java8内存模型—永久代(PermGen)和元空间(Metaspace)
- Java8内存模型—永久代(PermGen)和元空间(Metaspace)
- Java8内存模型—永久代(PermGen)和元空间(Metaspace)
- Java8内存模型—永久代(PermGen)和元空间(Metaspace)
- Java8内存模型—永久代(PermGen)和元空间(Metaspace)
- Java8内存模型—永久代(PermGen)和元空间(Metaspace)
- Java8内存模型—永久代(PermGen)和元空间(Metaspace)
- Java8内存模型—永久代(PermGen)和元空间(Metaspace)(转)
- JVM: Heap & Non-Heap
- iOS 第三方库冲突的处理
- 新手必读】微擎 微赞等系统源码模块若干问题解决方法及说明汇总
- 一个新的开始
- java中的继承和多态以及重载和重写
- Fragmnet为何一定需要空的构造方法
- Java8 Non-Heap 中的metaspace 和compressed class space解释
- Script定时器配置
- 二分查找
- oracle merge 语句,无数据新增,有数据更新
- Ugly Number
- 关于开发框架设计的一点想法
- 文章标题
- 选择排序
- ios开发中常用的几种辅助方法