`
javazqd110
  • 浏览: 8364 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java关于Class的生命周期

    博客分类:
  • java
阅读更多

1.一个Java对象有其自己的生命周期,而对象基于class类同样也有着自己生命周期。

2.java类的完整的生命周期会经历加载、连接、初始化、使用、和卸载五个阶段。

    2.1.加载java类加载器查找Class的二进制文件,把类的信息加载到jvm的方法区中,实例化一               个java.lang.Class对象。

 2.2.连接

 a)验证:检查载入的class文件数据合法性,如字节码的格式等,目的就是保证加载的类是能够被jvm          所运行。

   b)准备:为类的静态变量分配内存(基本类型为0,引用类型为null),为静态常量赋值目的是确保            变量的初始化。

 C)解析:把常量池中的符号引用转换为直接引用(直接引用就是这个方法在方法区中的。内存地址;符          号引用就是一个方法名),解析就是把类、接口、方法、成员变量的符号引用转换成内存地          址,以供调用(就是指针)

2.3.初始化执行静态域(声明变量时赋值语句,静态块)

   a).引用分为直接引用和被动引用,只有直接引用,会触发这一阶段。

   b).直接引用:new实例化对象;使用类的静态变量(非静态常量),方法;反射执行前三种情况;子         类被初始化;作为程序入口(调用main--调用静态方法的一种)

   c).被动引用:定义类数组;引用类的静态常量;类.class

   d).从上面看出,类的初始化具有惰性行为(只保证初始化要用到的),而主动引用会触发初始化(静         态常量是在链接中的准备阶段已经完成了)

2.4.使用:这样我们就可以创建对象实例了。

2.5.卸载Class作为JVM中的一个特殊对象,也会被GC回收卸载(清空方法区中Class的信息和堆区中的          java.lang.Class对象。这时Class的声明周期就结束了)

   a).Class被回收要同时满足以下三个条件:

          NoInstance:该类所有的实例都已经被GC;

       NoClassLoader:加载该类的ClassLoader实例已经被GC;

          NoReference:该类的java.lang.Class对象没有被引用(XXX.class, 静态变/方法)

    b).Java虚拟机自带的类加载器所加载的类,在虚拟机的生命周期中,始终不会被卸载(根据第          二条依据,系统ClassLoader实例不会被GCJava虚拟机本身会始终引用这些类加载器,而这          些类加载器则会始终引用它们所加载的类的Class象,因此这些Class对象始终是可触及的)

       Bootstrap类加载器;

       Extension类加载器;

       System类加载器。

       自定义的类加载器加载的Class是可以被卸载的(tomatjsp动态修改)

 

 

分享到:
评论

相关推荐

    java变量的生命周期与作用域

    Java 变量的生命周期与作用域 Java 变量的生命周期是指变量从定义到销毁的整个过程,而作用域是指变量可以被访问的范围。在 Java 中,变量的生命周期和作用域是密切相关的。 变量的生命周期可以分为三个阶段:定义...

    Java对象的生命周期[参照].pdf

    Java对象的生命周期是Java编程中一个关键的概念,它涵盖了从对象创建到销毁的全过程,包括内存分配、使用、以及垃圾回收。在这个过程中,理解JVM(Java虚拟机)的角色至关重要,因为它是对象生命周期的主要管理者。 ...

    详解java类的生命周期.doc

    Java 类的生命周期是指从类加载到卸载的全过程,这个过程包括加载、连接、初始化、使用和卸载五个阶段。下面我们将详细探讨这些阶段。 1. **加载**: 加载是生命周期的第一步,Java 虚拟机(JVM)在这个阶段寻找并...

    java编译class文件

    `.class`文件的生成是Java程序生命周期中的关键步骤,它使得Java代码能够在Java虚拟机(JVM)上运行。此外,`jd-gui`是一个实用的工具,它可以反编译`.class`文件,显示源代码,这对于调试和理解已有的二进制Java...

    spring bean的生命周期

    Spring Bean的生命周期是Spring框架中的核心概念,它涵盖了Bean从创建到销毁的全过程。了解这一过程对于优化应用程序的性能和管理资源至关重要。在Spring中,Bean的生命周期主要分为以下几个阶段: 1. **初始化阶段...

    Java对象在JVM中的生命周期详解

    "Java对象在JVM中的生命周期详解" Java对象在JVM中的生命周期是Java编程语言中一个非常重要的概念,它涉及到Java对象的创建、使用、释放和销毁整个过程。在JVM中,Java对象的生命周期可以分为七个阶段:创建阶段、...

    Java 线程的生命周期完整实例分析

    Java 线程的生命周期完整实例分析 Java 线程的生命周期是指线程从创建到销毁的整个过程。Java 中的线程生命周期主要包括以下几个阶段:新建(New)、可运行(Runnable)、运行(Running)、等待(Waiting)、阻塞...

    浅谈Java线程的生命周期——北大青鸟佳音旗舰.docx

    本文将深入探讨Java线程的生命周期,包括创建、启动、结束以及线程的协作和调度。 首先,创建Java线程有两种主要方式:直接实例化`Thread`类或者创建一个新的类去继承`Thread`类并重写`run()`方法。例如,你可以...

    Java 线程的生命周期详细介绍及实例代码

    Java线程的生命周期是每个Java多线程开发者必须了解的重要概念。线程在它的整个生命周期中会经历五个基本状态:新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)。接下来,我们将...

    Java线程的生命周期命名与获取代码实现

    本文将详细探讨Java线程的生命周期、调度与控制,并提供相关的代码实现。 **一、线程的生命周期** Java线程的生命周期包括五个基本状态: 1. **新建状态**(New):当使用`new Thread()`创建一个新的线程对象时,...

    Spring bean生命周期demo

    在Spring框架中,Bean的生命周期是指从创建到销毁的整个过程。这个过程包含了初始化、正常使用以及最终的销毁几个阶段。了解并掌握Spring Bean的生命周期对于优化应用性能和资源管理至关重要。接下来,我们将深入...

    spring中service生命周期(xml/annotation)

    在Spring框架中,Service层是业务逻辑的核心...以上就是关于Spring中Service生命周期的管理和配置,包括XML和注解方式的详细介绍。通过理解和熟练掌握这些知识,开发者能够更好地设计和维护Spring应用中的业务逻辑层。

    JVM之用Java解析class文件共10页.pdf.zi

    通过学习这一领域,开发者可以更好地理解Java程序的生命周期,提高问题诊断能力,并能利用字节码技术实现高级编程技巧。而"JVM之用Java解析class文件共10页.pdf.zip"这个压缩包很可能包含了一份详细的教程或论文,...

    Activity生命周期及Intent传值

    理解Activity的生命周期和Intent的传值机制对于Android开发者来说至关重要。 Activity的生命周期分为三个主要阶段:启动(Start)、运行(Running)和销毁(Destroy)。在启动过程中,Activity会经历onCreate()、...

    Servlet 介绍 以及Servlet生命周期(详细)

    总的来说,Servlet是Java Web开发中的基础,理解和掌握Servlet的生命周期对于开发高效、可靠的Web应用至关重要。结合源码分析和适当的工具,如调试器和日志记录,可以更好地理解和优化Servlet的性能。在实际项目中,...

    Android Activity生命周期

    Android Activity 生命周期 Android Activity 生命周期是指 Activity 从创建到销毁的整个过程,该过程中会经历多个状态变化,每个状态变化都会触发相应的回调方法。理解 Activity 生命周期是 Android 开发的基础。 ...

    java-class-lifecycle.rar_class

    Java 类的生命周期是Java编程中的一个核心概念,它涵盖了类从加载到卸载的整个过程。这个过程可以分为五个主要阶段:加载、验证、准备、解析和初始化。下面将详细探讨这些阶段及其重要性。 **1. 加载(Loading)** ...

    Java线程的生命周期的详解

    Java线程的生命周期详解 Java线程的生命周期是多线程编程中一个非常重要的概念,理解线程的生命周期可以帮助开发者更好地掌握Java多线程编程。下面是Java线程的生命周期的详解: 一、线程的状态 Java线程的生命...

    android生命周期管理:启动一个Activity

    当我们谈论“android生命周期管理:启动一个Activity”,我们关注的是如何启动Activity以及在生命周期中的关键回调函数。 1. 了解生命周期回调函数 Activity的生命周期由一系列的回调方法组成,包括onCreate(), ...

    解读servlet生命周期

    Servlet生命周期是Java Web开发中一个关键的概念,它描述了Servlet从创建到销毁的整个过程,这个过程由Servlet容器(如Tomcat)进行管理。Servlet生命周期主要分为三个阶段:初始化阶段、运行阶段和销毁阶段。 1. ...

Global site tag (gtag.js) - Google Analytics