Class的生命周期 - Always On The Way - 博客频道 - CSDN.NET
之前的《JVM类加载机制-ClassLoader》和《初探JVM-ClassLoader源码》,只是讨论了Class的加载部分,现在来纵观一下整个Class的生命周期。
Class的生命周期就是指一个class文件(字节码)从加载到卸载的全过程。
当一个类被装载、连接、初始化后,它的生命周期就开始了,当代表该类的Class对象不再被引用、即已经不可触及的时候,Class对象的生命周期结束。那么该类的方法区内的数据也会被卸载,从而结束该类的生命周期。
一个类的生命周期取决于它Class对象的生命周期,经历加载、连接、初始化、使用、和卸载五个阶段。
类的加载(Load Class)包含了以下三个步骤:
装载 Loading
查找Class的二进制文件(.class),把类的信息加载到JVM的方法区中,对其进行部分检验(类文件的魔数,文件长度,是否有父类等);在堆区中实例化一个java.lang.Class对象,作为方法区中这个类的信息的入口。
加载方式有多种:A. 在classPath下找相应class文件;B. 从jar文件中读取;C. 从网络中获取;D. 实时生成,如设计模式中的动态代理模式;E. 从非class文件中获取,这些文件在jvm中运行之前也会被转换为可识别的字节码文件。
一般来说加载和连接是同步的,但有时候也会交叉进行,但是两者的开始和结束是顺序的。
Read full article from Class的生命周期 - Always On The Way - 博客频道 - CSDN.NET
No comments:
Post a Comment