什么是CompressedClassSpaceSize?
CompressedClassSpaceSize和MetaspaceSize之间的关系是什么?
发布于 2019-01-18 12:59:18
Metaspace是用于存储解析.class文件时创建的类元数据内部.class结构的内存区域。
类元数据包括:
默认情况下,-XX:MaxMetaspaceSize是无限的。
当-XX:+UseCompressedClassPointers选项打开(堆<32G的默认值)时,类将从Metaspace移到称为压缩类空间的单独区域。这是为了允许用32位值而不是64位来寻址VM类结构.
因此,压缩类空间包含Java类的内部表示,而Metaspace保存所有rest元数据:方法、常量池、注释等。
压缩类空间的大小受-XX:CompressedClassSpaceSize限制,默认为1G。-XX:CompressedClassSpaceSize的最大可能值是3G。
非类元空间和压缩类空间是两个不相交的区域。MaxMetaspaceSize限制了这两个区域的提交大小:
committed(Non-class Metaspace) + committed(Compressed Class Space) <= MaxMetaspaceSize如果MaxMetaspaceSize设置为小于CompressedClassSpaceSize,则后者将自动降为
CompressedClassSpaceSize = MaxMetaspaceSize - 2*InitialBootClassLoaderMetaspaceSizehttps://stackoverflow.com/questions/54250638
复制相似问题