当前位置: 首页 > news >正文

高新快速建设网站电话免费私人网站

高新快速建设网站电话,免费私人网站,陕西网络营销优化公司,wordpress comments_template()1、加载 通过类的全名,获取类的二进制数据流。解析类的二进制数据流为方法区内的数据结构(Java类模型) 创建java.lang.Class类的实例,表示该类型。作为方法区这个类的各种数据的访问入口 2、验证 验证类是否符合JVM规范&…

1、加载

  • 通过类的全名,获取类的二进制数据流。
  • 解析类的二进制数据流为方法区内的数据结构(Java类模型) 
  • 创建java.lang.Class类的实例,表示该类型。作为方法区这个类的各种数据的访问入口 

2、验证 

验证类是否符合JVM规范,安全性检查 

  • 文件格式验证:是否符合Class文件的规范 
  • 元数据验证
这个类是否有父类(除了Object这个类之外,其余的类都应该有父类)这个类是否继承(extends)了被final修饰过的类(被final修饰过的类表示类不能被继承)类中的字段、方法是否与父类产生矛盾(被final修饰过的方法或字段是不能覆盖的)
  • 字节码验证
主要的目的是通过对数据流和控制流的分析,确定程序语义是合法的、符合逻辑的。
  • 符号引用验证
符号引用以一组符号来描述所引用的目标,符号可以是任何形式的字面量

3、准备

为类变量分配内存并设置类变量初始值

  • static变量,分配空间在准备阶段完成(设置默认值),赋值在初始化阶段完成 
  • static变量是final的基本类型,以及字符串常量,值已确定,赋值在准备阶段完成 
  • static变量是final的引用类型,那么赋值也会在初始化阶段完成

4、解析

把类中的符号引用转换为直接引用:将字节码文件中的#+数字(符号引用)转换为具体的类和方法(直接引用)

5、初始化

对类的静态变量,静态代码块执行初始化操作

  • 如果初始化一个类的时候,其父类尚未初始化,则优先初始化其父类。 
  • 如果同时包含多个静态变量和静态代码块,则按照自上而下的顺序依次执行。

6、使用

JVM 开始从入口方法开始执行用户的程序代码

  • 调用静态类成员信息(比如:静态字段、静态方法) 
  • 使用new关键字为其创建对象实例 

7、卸载

当用户程序代码执行完毕后,JVM 便开始销毁创建的 Class 对象,最后负责运行 的 JVM 也退出内存

http://www.ihoyoo.com/news/611.html

相关文章: