聊聊jvm的CompressedClassSpace
时间: 2023-07-19 20:54:30 浏览: 62
JVM中的CompressedClassSpace是用来存储类元数据的空间,它是在JDK 8中引入的。在默认情况下,CompressedClassSpace启用了压缩,它会将类的元数据压缩成一个更小的空间,从而节省了内存空间。
CompressedClassSpace主要有两个部分:Metaspace和Class Space。Metaspace是用于存储类的元数据,而Class Space用于存储类的实例数据。
CompressedClassSpace的大小可以通过设置JVM参数来调整。如果CompressedClassSpace的大小不够用,JVM会自动扩展它的大小,但这会导致应用程序的性能下降。
另外需要注意的是,在使用CompressedClassSpace时,需要确保JVM的压缩模式是启用的。如果没有启用压缩模式,CompressedClassSpace就会失去它的优势,同时也会消耗更多的内存空间。
相关问题
java jvm 的class 的结构
Java虚拟机中的Class结构主要包含以下几个部分:
1. 魔数(Magic Number):一个固定的标识,用于标识文件是否为Java Class文件,固定值为0xCAFEBABE。
2. 版本号(Version):Class文件的版本号,包括一个主版本号和一个次版本号。
3. 常量池(Constant Pool):存储Class文件中所有常量的信息,包括数字、字符串、类和接口等。
4. 访问标志(Access Flags):用于表示Class或者接口的访问修饰符,例如public、private、abstract等。
5. 类索引(This Class):指向当前Class或者接口的全限定名。
6. 父类索引(Super Class):指向父类的全限定名。
7. 接口索引集合(Interfaces):包含当前Class直接实现的接口的全限定名。
8. 字段表集合(Fields):包含当前Class中的所有字段信息,包括访问修饰符、名称、类型、属性等。
9. 方法表集合(Methods):包含当前Class中的所有方法信息,包括访问修饰符、名称、参数、返回值、属性等。
10. 属性表集合(Attributes):包含当前Class中的所有属性信息,包括Code属性、Exceptions属性等等。
JVM Class Count TOP
我不确定你的问题是什么,但如果你想知道JVM中加载的类的数量排名,可以通过以下命令来查看:
1. 打开JVisualVM,选择本地应用程序,并查看“类”选项卡,即可查看当前JVM中加载的类的数量。
2. 在命令行中运行以下命令:
```
$ jmap -clstats <pid>
```
其中,`<pid>`是Java进程的进程ID。该命令将显示当前JVM中加载的类的数量、数量排名以及每个类所占的空间等信息。