jvm连接模型

1 java虚拟机构成

类加载系统 执行引擎 运行时数据区

运行时数据区包括 堆、栈、方法区、本地方法区、pc寄存器。其中堆、方法区是多线程共享的,其它的是线程安全的。

2 java虚拟机链接模型

装载 连接 初始化

装载的产物:

一个堆上的class实例:是连接类实例与方法区数据结构的桥梁,通过class实例,类的实例能够知道类本身的详细构成信息

方法区上的一个数据结构:用来描述一个类的的构成信息。包括:

所有方法的描述(参数,返回类型等等);所有超类的描述(如果有的话);所有实现了的接口列表(如果有的话);所有属性的描述;类加载器的索引。

虚拟机中的类,全路径构成是:类加载器名称+类的全路径

类加载器分为
启动类加载器:java核心api
系统类加载器:classpath下寻址
用户自定义类加载器:

类 加载器可以用来区分类,比如经常出现这种情况:在WEB-INF/lib下有两个jar包a.jar和b.jar,两个jar包中都包含 com.baidu.test.A.class,加载后就不知道虚拟接加载的是哪个类,这说明tomcat设置者用同一个类加载器来管理WEB- INF/lib下的class

连接:

分为验证、准备和解析。连接后,常量池中符号引用已经被替换为直接引用,
每个属性已经被分配了内存,整个类的信息已经被验证是合法的。

初始化:

只有类被主动使用时,才会触发初始化。主动使用的场景包括:

调用了类的main方法

通过反射构建了类的对象

调用了类的静态方法

访问了类的静态属性:如果直接访问父类的静态属性,那么只能导致父类被初始化,子类不会被初始化。

通过new关键字直接构建对象

还有一个忘了。

其它情况都是被动调用,不会触发类的初始化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值