本文主要讲解一下在 JVM 中如何保存 Java 对象以及 Java 对象指针压缩相关的东西
JVM 体系结构
JVM 规范中定义的体系结构(这个只是定义的规范,实际的 JVM 实现中可能与这个结构会有差异)
堆和方法区是所有类共享的,其中堆主要存储对象实体,方法区存储的信息比较多,主要包括下面几类:
类的基本类型信息
-
类型的全限定名
-
直接超类的全限定名(除了 Object)
-
是类还是接口
-
访问修饰符
该类的常量池
-
虚拟机会为每个转载的类型维护一个常量池
字段信息
-
字段名称
-
字段类型
-
字段修饰符(public,private,protected,static,final,volatile,transient)
方法信息
-
方法名
-
方法的返回值类型或者void
-
方法的参数数量和类型(按照声明顺序)
-
方法的修饰符(public,private,protected,static,final,synchronized,natvie,abstract)
-
如果不是abstract和native方法,还会保存下面的信息
-
方法的字节码
-
操作数栈和局部变量区的大小
-
异常表
<