`
insertyou
  • 浏览: 906230 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

类的生命周期回顾篇

 
阅读更多


一、JAVA虚拟机和JAVA程序的生命周期


JAVA虚拟机的生命周期和JAVA程序的生命周期一致,当我们在命令行中敲入java命令运行java程序时,java虚拟机进程启动,程序运行,当程序终止时,则JAVA虚拟机的生命也结束。


二、类的生命周期


1.加载将.class文件的二进制数据放到内存方法区中,并在堆区中创建一个Class对象,这个Class对象封装了方法区的数据结构,用户能通过Class对象访问到方法区中。

2.连接

(1)验证:验证.class文件是否是通过JAVA程序编译出来的,因为有可能这个.class文件是黑客特意制造出来的。

(2)准备:为类中的静态变量分配空间,并初始化为默认值。
(3)解析:把类的符号引用变为直接引用。

3.初始化:为静态变量和静态块赋予值。

JAVA程序对于类的使用方式:

(1)主动使用。

(2)被动使用。

这里注意:

JAVA虚拟机对于加载和连接的时间节点是很宽松的,没有严格规定,可以提前加载也可以;但是对于初始化,JAVA虚拟机规定当某个类被主动使用时才能初始化。

我们把3个步骤细讲一下:

1.类的加载:类是通过类加载器进行加载。

类加载的来源:

(1)文件系统中的class文件

(2)jar包

(3)网络中下载。

类加载目的地:内存。

类加载器分类:

(1)根类加载器:没有父类,加载java.lang.*。

(2)扩展类加载器:父类是根类加载器,用于加载jre\lib\ext的jar包。

(3)系统类加载器:父类是扩展类加载器,用于加载classpath的jar包。Class scl = Class.getSystemClassLoader();

(4)自定义加载器:自定义加载,通常父类是系统类加载器。

注意:通过类虚拟机自带的(1)(2)(3)加载器是JAVA虚拟机创建的,而他们加载的类,他的生命周期是虚拟机的生命周期,因为始终被加载器锁引用。

2.类的解析

将符号引用转换成直接引用。比如:

A函数调用了B函数,原本只是符号引用即标明引用了B函数,直接引用是将符号改成指针指向B函数。

3.类的初始化

规则:

(1)初始化的静态变量都是运行时变量,即不能在编译时就能判断值是多少。

(2)初始化的顺序就是按照代码的顺序执行。

(3)如果初始化子类时父类还没有被初始化,则先初始化父类。

初始化时机:当遇到以下情况会进行初始化。

(1)new创建实例、反射创建实例、clone创建实例、反序列化创建实例。

(2)访问静态变量,即读和写。

(3)调用静态方法。

(4)启动类需要首先初始化。

(5)Class.forName();

注意:

(1)当遇到编译时常量,则直接用数字替换,而不会导致类初始化。比如public static final int a= 3;这就是一个编译时常量。

(2)当子类对象调用父类的静态变量或方法,则只对父类进行初始化。比如:Sub.a,其中a是父类的静态变量,则只对Base初始化。

(3)当子类被初始化时,父类一定要先初始化;

但是如果一个类实现了一个接口,当类被初始化时,不用初始化父接口。

只有对这个接口进行访问时,才会对接口进行初始化。

(4)loader.loadClass("....");只是对类的加载,而不是初始化。


类加载过程采用“父亲委托机制”,即如果loader2的父类是loader1,loader2想要加载test类,则先会检查loader1是否能够加载test类,如果能,则通过父类加载。

运行时包的概念:包名相同,类加载器相同。

分享到:
评论

相关推荐

    SpringBoot内置生命周期事件详解 SpringBoot源码(十)

    温故而知新,我们来简单回顾一下上篇的内容,上一篇我们分析了SpringBoot启动时广播生命周期事件的原理,现将关键步骤再浓缩总结下: 为广播SpringBoot内置生命周期事件做前期准备:1)首先加载ApplicationListener...

    大型零售企业与供应商合作关系演进——基于渠道关系生命周期视角.pdf

    本篇研究文章的题目是《大型零售企业与供应商合作关系演进——基于渠道关系生命周期视角》,聚焦于大型零售企业和供应商之间在市场流通渠道缩短背景下的合作关系演进路径,并尝试运用关系生命周期理论对这种演进进行...

    微信小程序开发进阶篇:生命周期、数据绑定与模块化

    一:生命周期   准备写一个小系列,帮...App 函数是整个小程序的入口, 这在我们上篇文章中已经介绍了, 咱们再把代码贴出来回顾一遍: App({  onLaunch: function () {  //调用API从本地缓存中获取数据  var logs

    信阳南湾风景区旅游地生命周期分析及预测 (2004年)

    信阳南湾风景区旅游地生命周期分析及预测这一研究文章,首先对旅游地生命周期理论进行了回顾,并对旅游地生命周期的六个发展阶段进行了详细阐述,包括探索期、参与期、发展期、巩固期、停滞期和衰落期(或复苏期)。...

    ATL 揭秘之“对象创建”篇

    - **生命周期管理**:通过引用计数(`AddRef`和`Release`)来管理对象的生命周期。 #### 3. ATL COM对象实现 ATL通过分层的方式实现COM对象的不同特性,每个层次处理COM对象的特定方面。 **3.1 基础类:...

    三年级下册科学第二单元归类复习.doc

    这篇文档是针对三年级下册科学课程的第二单元归类复习材料,主要涵盖了生命科学中的昆虫生命周期,特别是蚕的生命周期和养殖知识。以下是相关知识点的详细解释: 1. **昆虫生命周期**: - 蚕的一生经历四个阶段:...

    c++语言知识点总结 英文版 适合查询和快速回顾知识点

    对于初学者而言,这篇英文版的C++知识点总结是极为有用的参考资料,因为它重点在于总结而不是完整介绍,便于快速回顾和查询。然而,为了完全掌握C++的各方面知识,还是需要深入阅读相关章节,并结合实际编程实践来...

    java实训报告集锦7篇.docx

    3. 熟悉Applet程序的开发,理解其在网络环境下的运行机制和生命周期管理。 4. 提高问题分析能力,能根据需求设计合理的算法和数据结构。 5. 增强程序设计和调试技巧,通过实际项目训练,提升编程实战能力。 6. ...

    Java基础 反射篇.md

    1. **Spring的IOC容器**:Spring框架利用反射机制来管理Bean的生命周期,包括创建Bean实例、依赖注入等。 2. **反射 + 抽象工厂模式**:通过反射动态创建特定类型的对象,增强了系统的可扩展性和可维护性。 3. **...

    基于GoogleScholar引度指标探析以图灵奖文献为例[参考].pdf

    文章首先回顾了引文速度的研究现状,定义了新的引文速度概念:即论文从发表年算起,在其整个被引生命周期中,每个阶段的平均被引频次及所需时间。这种定义使得引文速度不再仅仅是简单地计算论文发表后的累积引用次数...

    [课堂课件讲解]Java微服务实践-Spring Boot Web篇(下).pptx

    容器管理 Servlets 实例以及它们的生命周期。 3. Servlet 的历史 1997 年六月,Servlet 1.0 版本发行,最新版本 Servlet 4.0 处于研发状态。 4. Servlet 的核心接口 包括 javax.servlet.Servlet、javax.servlet....

    Java语言程序设计-进阶篇(原书第8版).

    5. 多线程与并发编程:Java提供了强大的多线程支持,本书会讲解线程的基本概念、线程的生命周期、线程同步机制、并发工具类等,并讨论在多线程编程中可能遇到的问题和解决方案。 6. I/O流与文件操作:Java提供了...

    四年级科学下册 开花结果教案 湘教版.doc

    这篇文档是湘教版小学四年级科学下册的教案,主要围绕“开花结果”这一主题展开,旨在让学生理解和掌握植物生命周期中的重要阶段——开花和结果。以下是对教案内容的详细解读: 1. **教学目标**: - 认知目标:...

    毕业论文外文翻译4篇

    这可能包括页面生命周期、HTTP请求处理、数据绑定和用户界面控件的使用等内容。对于正在撰写毕业论文的计算机科学或软件工程专业的学生来说,了解并掌握ASP.NET技术对于构建Web应用项目至关重要。 【数据库数据查询...

    Research and Implementation of CAD Documents Version Finalizing Based on PLM.pdf

    这篇文章提出了一种基于PLM(产品生命周期管理)平台的CAD文档版本最终确认方法,并使用ENOVIA作为该方法的实现平台。通过强调产品设计全过程中的版本最终确认需求,文章引入了详细展示所提出的CAD文档版本最终确认...

    建筑的_光合_2004年国际太阳能设计竞赛回顾.pdf

    1. 绿色建筑概念:绿色建筑是指在建筑的全生命周期内,通过高效的资源使用(包括节约能源、水和原材料),对室内环境质量的优化,以及对建筑周围生态环境影响的最小化,实现与自然环境和谐共生的建筑。绿色建筑注重...

    金融供给侧慢牛系列报(四):科技牛的估值,从中观到微观_广发证券-31页.pdf

    其次,报告讨论了科技牛的估值方式,认为科技牛的估值需要考虑生命周期的不同阶段,包括产品面市前的主题概念期、导入期、成长期等。不同的阶段需要采用不同的估值方式,例如创新药上市左侧采用在研管线(Pipeline)...

    信息系统项目管理师学习笔记(考前知识点回顾 强化记忆)

    信息系统项目管理师是负责管理信息系统的开发、实施和运营的专业人士,其工作...这些知识和技能的结合,有助于信息系统项目管理师在项目生命周期的各个阶段,有效地控制项目进度、成本和质量,确保项目目标的顺利实现。

    毕业实习总结汇总9篇.pdf

    例如,在产品生产及调试的实习过程中,学生深刻体会到理论知识与实际应用之间的差距,了解到了产品全生命周期中各阶段的考量,诸如材料选择、生产效率和热处理等实际问题,这些都是课堂上所不涉及的重要知识点。...

Global site tag (gtag.js) - Google Analytics