CompressedClassSpaceSize区域是否包含MaxMetaspaceSize区域? [英] Is CompressedClassSpaceSize area contains MaxMetaspaceSize area?
问题描述
什么是CompressedClassSpaceSize
?
CompressedClassSpaceSize
和MetaspaceSize
之间是什么关系?
推荐答案
元空间是用于存储类元数据的内存区域-在解析.class
文件时创建的内部JVM结构.
Metaspace is the memory area for storing class metadata - internal JVM structures created while parsing .class
files.
类元数据包括:
- Java类的内部表示形式
- 带有字节码的方法
- 字段描述符
- 恒定池
- 符号
- 注释
- 等
-XX:MaxMetaspaceSize
默认情况下是无限的.
-XX:MaxMetaspaceSize
is unlimited by default.
当-XX:+UseCompressedClassPointers
选项为ON(堆<32G的默认设置)时,类将从Metaspace移到名为 Compressed Class Space 的单独区域.这是为了使用32位值而不是64位来寻址VM类结构.
When -XX:+UseCompressedClassPointers
option is ON (default for heaps < 32G), classes are moved from Metaspace to the separate area called Compressed Class Space. This is to allow addressing VM class structures with 32-bit values instead of 64-bit.
因此,压缩类空间包含Java类的内部表示形式,而元空间则包含所有其余的元数据:方法,常量池,注释等.
So, Compressed Class Space contains internal representation of Java classes, while Metaspace holds all the rest metadata: methods, constant pools, annotations, etc.
压缩类空间的大小受-XX:CompressedClassSpaceSize
限制,默认情况下为1G. -XX:CompressedClassSpaceSize
的最大可能值为3G.
The size of Compressed Class Space is limited by -XX:CompressedClassSpaceSize
, which is 1G by default. The maximum possible value of -XX:CompressedClassSpaceSize
is 3G.
非类元空间和压缩类空间是两个不相交的区域. MaxMetaspaceSize
限制了两个区域的承诺大小:
Non-class Metaspace and Compressed Class Space are two disjoint areas. MaxMetaspaceSize
limits the committed size of both areas:
committed(Non-class Metaspace) + committed(Compressed Class Space) <= MaxMetaspaceSize
如果将MaxMetaspaceSize
设置为小于CompressedClassSpaceSize
,则后者会自动减小为
If MaxMetaspaceSize
is set smaller than CompressedClassSpaceSize
, the latter is automatically decreased to
CompressedClassSpaceSize = MaxMetaspaceSize - 2*InitialBootClassLoaderMetaspaceSize
这篇关于CompressedClassSpaceSize区域是否包含MaxMetaspaceSize区域?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!