深入JVM之类的加载过程
2014-01-22 15:46
134 查看
类的加载—连接—初始化
加载:查找并加载类的字节码文件,从硬盘到内存.
类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构,加载的.class文件的方式主要有:从本地系统中直接加载,通过网络下载.class文件,从zip、jar等归档文件中加载.class文件,从专有数据库中提取.class文件,将java源文件动态编译成.class文件。类的加载的最终产物就是位于堆内存中的Class 对象 。Class对象封装了类在方法区内的数据结构,并且向java程序员提供了访问方法区内的数据结构的接口,这个接口就是反射接口。
连接:
1.验证:确保被加载类的正确性.
2.准备:为类的静态变量分配内存,并将其初始化为默认值,隐式初始化.
3.解析:把类中的符号引用转换为直接引用.
初始化:为类的静态变量赋予正确的初始化值显示初始化.
Java程序对类的使用方式分为两种:
—主动使用(六种)
1.创建类的实例 new Demo();
2.访问某个类或借口的静态变量,或者对该静态变量赋值 int a = Demo.x; Demo.x = a;
3.调用类的静态方法 Demo.dosomething();
4.反射(Class.forName(com.cnblogs.Demo))
5.初始化一个类的子类
6.虚拟机启动时,被标明为mian类的类
每个类或接口被Java程序"首次主动使用"时才初始化它们
—被动使用:除以上6种其他情况都称为对类的被动使用,都不会导致类的初始化.
加载:查找并加载类的字节码文件,从硬盘到内存.
类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构,加载的.class文件的方式主要有:从本地系统中直接加载,通过网络下载.class文件,从zip、jar等归档文件中加载.class文件,从专有数据库中提取.class文件,将java源文件动态编译成.class文件。类的加载的最终产物就是位于堆内存中的Class 对象 。Class对象封装了类在方法区内的数据结构,并且向java程序员提供了访问方法区内的数据结构的接口,这个接口就是反射接口。
连接:
1.验证:确保被加载类的正确性.
2.准备:为类的静态变量分配内存,并将其初始化为默认值,隐式初始化.
3.解析:把类中的符号引用转换为直接引用.
初始化:为类的静态变量赋予正确的初始化值显示初始化.
Java程序对类的使用方式分为两种:
—主动使用(六种)
1.创建类的实例 new Demo();
2.访问某个类或借口的静态变量,或者对该静态变量赋值 int a = Demo.x; Demo.x = a;
3.调用类的静态方法 Demo.dosomething();
4.反射(Class.forName(com.cnblogs.Demo))
5.初始化一个类的子类
6.虚拟机启动时,被标明为mian类的类
每个类或接口被Java程序"首次主动使用"时才初始化它们
—被动使用:除以上6种其他情况都称为对类的被动使用,都不会导致类的初始化.
相关文章推荐
- 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题
- 深入理解JVM(九)——类加载的过程
- JVM之类加载过程(二)
- [置顶] JVM虚拟机之类加载的过程
- 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题
- java面试- 深入理解JVM(九)——类加载的过程
- 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题
- 深入JVM之类加载、类加载器、双亲委派机制与常见问题
- jvm探秘八:类加载机制之类加载过程
- Java学习之类加载全过程_JVM内存分析_反射机制核心原理_常量池理解
- 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题
- 深入理解JVM(九)——类加载的过程
- JVM之类加载过程
- 深入理解JVM(九)——类加载的过程
- 深入理解JVM(九)——类加载的过程
- 【总结】深入JVM之类加载机制
- 深入理解JVM-虚拟机加载机制-类加载过程
- 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题
- JVM之类加载过程(一)
- 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题