技术点-类加载器-理解
来源:互联网 发布:手机恶作剧软件骑马 编辑:程序博客网 时间:2024/06/13 19:36
类加载器
1,JVM中几个比较重要的内存区域,还有其他区域,这几个区域在类的的生命周期中扮演着比较重要的角色。
方法区:存放类信息,常量,静态变量,方法代码。
常量池:常量,类中的符号引用。
堆:用来存放类的实例对象。
栈:先进后出,存放代码运行时产生的临时变量,局部变量,方法出口等。并且本身通过栈帧存放数据,当方法调用完成后,栈帧消失。
2,java类的生命周期
-指的是一个class文件从加载到卸载的全过程。
-具体指5个阶段:加载-连接-初始化-使用-卸载
-也有可能直接跳过初始化
3,类加载器执行的三部分
加载:查找并加载类的字节码文件。
连接
-验证:确保被加载类的正确性。
-准备:给类的静态变量分配内存,并将其初始化为默认值。
-解析:把类中的符号引用转换为直接引用。
初始化:为类的静态变量赋予正确的初始化值。
-分为两个部分
1,静态变量的初始化
2,静态代码块的初始化
这i两种初始化统一归为静态变量的初始化。
4,结论:
1,类加载的最终产品/目标时位于堆中的class对象。 2,java虚拟机给我们提供了两种类加载器:-虚拟机自带的加载器-用户自定义加载器,在java.lang.ClassLoader的子类。
5,java程序对类的使用
-主动使用
-被动使用
关键点:java虚拟机实现必须在类/接口被java程序首次主动使用时才会初始化它们。
主动使用:六种
1,创建类的实例。2,访问某个类/接口的静态变量,或者对静态变量赋值。3,调用类的静态方法。4,反射。5,初始化类的子类。6,服务器启动时被标明启动的类。
6, 类的初始化步骤:
不针对接口—
1,如果父类还没有初始化,那么子类初始化之前会现初始化父类。
2,对子类的初始化会对父类初始化,但是对父类的初始化不会对子类初始化。
–初始化子类的时候,并不会初始化父接口。
–初始化接口时,并不会初始化父接口。
–只有当程序首次使用特定接口的静态变量时,才会导致初始化接口。
引荐牛人博客,许多理解都是从他的博客中学到的,非常感谢!
http://blog.csdn.net/csh624366188/article/details/7278508
- 技术点-类加载器-理解
- 技术点个人理解
- html加载速度技术点
- 理解类加载器
- 类加载器基本理解
- 类加载器深入理解
- JAVA类加载器理解
- 类加载器深入理解
- 简单理解类加载器
- 类加载器的深入理解
- 理解类加载器和Class对象
- Java中类加载器的理解
- 深入理解java虚拟机---类加载器
- 深入理解java类加载器ClassLoader
- Java类加载器深入理解
- Java类加载器深入理解
- 初步理解java类加载器
- 深入理解java类加载器ClassLoader
- codeforces 686D(树的重心)
- 648. Replace Words
- 如何选择机器学习算法的简单线路图
- rownum用法详解
- org.slf4j.Logger找不到
- 技术点-类加载器-理解
- java上传与下载
- Servlet初相识
- MySQL 基本操作查询
- 润乾V5链接sqlserver2008R2 报错及解决办法
- MyEclipse常用快捷键
- 常见的python算法题
- 在慕课网授课后关于学习模式的实践和思考
- [Muduo网络库源码分析] (4) base/Exception_cc_h_带 stack trace 的异常基类