网站大量收购闲置独家精品文档,联系QQ:2885784924

Java中类的生命周期.doc

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java虚拟机管理类和对象的生命周期; (1)类的生命周期从类被加载,连接,初始化开始,到类被卸载结束; (2)类处于生命周期时,它的二进制数据位于运行时方法区内,在堆区还有一个相应的描述类的Class类的对象; (3)只有当类处于生命周期中时,Java程序才能够使用它。 1.Java虚拟机及程序的生命周期 (1)通过java命令运行一个Java程序时,启动一个Java虚拟机进程; (2)Java虚拟机进程从启动到终止的过程,称为Java虚拟机生命周期; (3)程序生命周期和Java虚拟机生命周期是一致的,因为Java虚拟机进程从创建起的任务就是执行Java程序。 2.类的加载,连接和初始化 a.Java程序要使用某个类时,Java虚拟机要确保这个类被加载,连接和运行,其中连接包括验证,准备和解析。 b.加载:查找并加载类的二进制数据; c.连接 c.1 验证:确保加载类的正确性; c.2 准备:为静态变量分配内存,并将其初始化为默认值; c.3 解析:将类中的符号引用转换为直接引用。 d初始化: 给类的静态变量赋予正确的初始值 (1)加载(加载的最终目标是实现将编译后的class文件(class文件采用字节码,是JVM的机器语言)装入内存运行时数据区的方法区中,并在内存运行时数据区的堆区生成一个class对象,这个对象可以引用到方法区中的类定义) 1.1 加载需要完成: 1.1.1 将类的.class文件中的二进制数据读到内存中的运行时数据区的方法区; 1.1.2 在堆区创建一个java.lang.Class对象(对象都放在堆区),用于封装类在方法区内的数据结构。 1.2 加载的最终产品是位于运行时数据区堆区的java.lang.Class对象,Class对象封装了类在方法区的数据结构,并向Java程序提供访问类在方法区内的数据结构的接口 1.3 类的加载由加载器完成 1.3.1 Java虚拟机自带的加载器(如果Java虚拟机是一个C++程序,则这些加载器是这个C++程序的一部分) 包括启动类加载器,扩展类加载器和系统类加载器《后两个都是java.lang.Class类的实例》 1.3.2 用户自定义的类加载器 java.lang.Class的子类的实例,用户可以通过它定制类的加载方式(用户自定义的类加载器使Java具有动态连接的特性,即Java无需在编译时确定需要的组件类,在运行时动态确定需要加载的类) 类加载器在预料某个类将要被使用时就预先加载它,如果在预先加载过程中遇到.class文件缺失,类加载器等到程序首次调用类的时候报错 Java中的类加载器采用父亲委托机制,使用加载器加载类是,首先看其父亲是否能够完成类的加载,如果可以,则由父亲完成类的加载,返回加载的类的java.lang.Class对象,注意,加载器之间的父子关系并不是java中普通的继承关系,而是一种包含关系,具有父子关系的类也许是不同的类型。 (2)连接 在连接阶段对静态变量分配内存(静态变量是类作用域变量,仅在类加载时分配一次内存),并赋予默认值。 (3)初始化 类的初始化过程是执行类的初始化语句,包括静态变量的声明语句,以及静态代码块,静态代码块的作用即是为静态变量赋初始化值。

文档评论(0)

ktj823 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档