当前位置:  编程技术>java/j2ee

java类型生命周期的详细解析

    来源: 互联网  发布时间:2014-10-27

    本文导语:  开始阶段 装载:把二进制形式的java类型读入jvm中。1)通过该类型的完全限定名,产生一个代表该类型的二进制数据流;2)解析这个二进制数据流为方法区内的内部数据结构;3)创建一个表示该类型的java.lang.Class类的实例; ...

开始阶段

装载:把二进制形式的java类型读入jvm中。
1)通过该类型的完全限定名,产生一个代表该类型的二进制数据流;
2)解析这个二进制数据流为方法区内的内部数据结构;
3)创建一个表示该类型的java.lang.Class类的实例;

连接:把已读入的类型数据合并到虚拟机的运行时状态中。
1)验证:确保java类型数据格式正确并且适用于jvm使用;
2)准备:为该类型分配内存;
3)解析:把常量池中的符号引用转换为直接引用;

初始化:每个类和接口在首次主动使用时初始化。为类变量赋予正确的初始值;
1)如果类存在直接超类,且直接超类没有被初始化,先初始化直接超类;
2)如果类存在初始化方法,就执行此方法;

只有六种活动被认为是主动使用:
1)、创建类的新实例
2)、调用类中声明的静态方法
3)、操作类或者接口中声明的非常量静态字段
4)、调用Java API中特定的反射方法
5)、初始化一个类的子类
6)、指定一个类作为jvm启动时的初始化类

使用阶段(绝大部分时间)

实例化

实例化途径
明确实例化一个类的四种途径:
1)、new操作符;
2)、调用Class或者Java.lang.reflect.Constructor对象的newInstance()方法;
3)、调用任何现有对象的Clone()方法;
4)、通过java.io.ObjectInputStream类的getObject()方法反序列化;

隐含实例化的几种途径:
1)、保存命令行参数的String对象;
2)、和类装载相关,jvm装载的每一个类型,会暗中实例化一个Class对象来代表这个类型;
3)、和类装载相关,当jvm装载了在常量池中包含CONSTANT_String_info入口类的时候,会创建新的String对象的实例来表示这些常量字符串;
4)、通过执行包含字符串连接操作符的表达式产生对象;

实例化步骤
1)、在堆中为保存对象的实例变量分配内存;
2)、为实例变量初始化为默认的初始值;
3)、为实例变量赋正确的初始值,有三种技术完成赋值:
  a)、如果对象是clone() 创建的,jvm把原实例变量中的值拷贝到新对象中;
  b)、如果是通过ObjectInputStream类的readObject()调用反序列化的,jvm从输入流中读取的值来初始化实例变量;
  c)、jvm调用对象的实例化方法把对象的实例变量初始化为正确的初始值;

垃圾收集和对象终结
jvm实现必须具有某种自动堆存储管理策略,大部分是使用垃圾收集器。如果类声明了 void finalize()方法,垃圾收集器在释放实例内存前会执行这个方法。

垃圾收集器自动调用的finalize()方法抛出的任何异常都将被忽略。

结束阶段

从jvm中卸载类型
很多情况,jvm中类的生命周期和对象的生命周期很相似。jvm如何判断动态装载的类型是否仍然被程序使用,其判断方式和判断对象是否仍然被使用很相似。

如果程序不再引用某类型,那么类型就是不可触及的,就可以被卸载。

使用启动类装载器装载的类型永远都是可触及的,所以永远不会被卸载。只有使用用户定义的类装载器装载的类型才会变成不可触及,才会被卸载。


    
 
 

您可能感兴趣的文章:

  • java实现计算周期性提醒的示例
  • java多线程编程之线程的生命周期
  • java线程之线程的生命周期的使用
  • java 公式解析 表达式解析 expression-analyzer
  • 请问各位:我用SUN公司的JAXP开发包解析XML文档,可不知道对XML解析后如何将结果写回文件中。请各位熟悉Java和XML的高手帮忙。
  • java解析xml之jdom解析xml示例分享
  • Java 的解析器代码生成器 AustenX
  • Java的HTML解析器 Jerry
  • java解析xml之dom4j解析xml示例分享
  • java解析xml之dom解析xml示例分享
  • Java的CSV解析包 CSVBeans
  • Java结构化数据解析包 Lycia iis7站长之家
  • 求教JAVA中XML解析问题
  • Java表达式解析器 JExel
  • Java代码解析工具 JavaFE
  • Java表达式语法解析库 parboiled
  • Java的HTML解析包 jScraper
  • Java的 RSS/Atom的解析器 FeedParser
  • Java的HL7解析器 HAPI
  • java解析xml用什么包?
  • 有什么java包可以支持解析html的。
  • Java结构化数据解析包 Lycia
  • Java的HTML解析库 gohtml
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.xml.ws注释类型webserviceref成员方法: type定义参考
  • java 基本类型或可序列化类型,这里说的可序列化类型是什么意思???具体都有哪些类型??谢谢
  • java命名空间javax.annotation注释类型resource的类成员方法: authenticationtype定义及介绍
  • 如何将java.util.Date类型的日期转换成java.sql.Date类型的日期?
  • java命名空间javax.annotation注释类型resource的类成员方法: type定义及介绍
  • 请问SQL中的datetime类型于java中什么类型对应?
  • java命名空间javax.xml.ws注释类型webserviceref成员方法: value定义参考
  • java中的字符类型如何转换成String类型
  • java命名空间javax.annotation注释类型resource的类成员方法: shareable定义及介绍
  • 请教JAVA小问题:如何将含数字的String类型的对象转化为int或long类型
  • java命名空间javax.jws注释类型webparam的类成员方法: mode定义及介绍
  • ado的rs.field("字段名")可以访问任何类型的数据,那吗java里面这种问题如何处理。是不是要先判断类型然后再根据类型来使用相应的getint or getString阿!谢谢了!在线等待!
  • java命名空间javax.xml.ws注释类型webserviceref成员方法: wsdllocation定义参考
  • 深入理解:Java是类型安全的语言,而C++是非类型安全的语言
  • java命名空间javax.xml.bind.annotation注释类型xmlelementref的类成员方法: type定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间javax.xml.bind.annotation注释类型xmlenum的类成员方法: value定义及介绍
  • java的数据类型问题
  • java命名空间javax.xml.ws注释类型responsewrapper成员方法: targetnamespace定义参考
  • java协变返回类型使用示例
  • java命名空间javax.xml.ws注释类型responsewrapper成员方法: classname定义参考
  • java里基本数据类型是什么?对象么?
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3