CompressedClassSpaceSize

  • 使用压缩类指针时,元空间中类区域的最大大小

InitialBootClassLoaderMetaspaceSize

  • 引导类加载器数据元空间的初始大小

  1. 从JDK8开始,JVM启动的时候会专门分配一块内存,大小是CompressedClassSpaceSize,正常情况会类似Perm一样挨着Heap分配,这块内存专门来存类元数据的klass(包含元数据和方法信息,用来描述Java类)部分

  2. 如果UseCompressedClassPointers未开启,CompressedClassSpaceSize参数没有效果,那块内存也不会有

  3. lnitialBootClassLoaderMetaspaceSize主要指定BootClassLoader的存储非klass部分的数据的第一个Metachunk的大小,64位下默认4M,32位下默认2200K,而存储klass部分的数据的第一个Metachunk的大小默认大概是384K

  4. Metaspace如果类加载器很多的时候,最大的问题就是碎片化的问题

  5. jstat看到的Metaspace内存的使用率,分母是committed的size,而不是整个Reserved的内存