类的生命周期

1.加载

将.class二进制字节流流从磁盘读到内存中(通过文件的全限定名读取)

2.连接

  2.1验证:验证字节码文件的正确性

  2.2准备:给类的静态变量分配内存,并赋予默认值(比如 int i = 0)

  2.3解析:类装载器装入类所引用的其它类

3.初始化

为静态变量赋予正确的初始值,此阶段才是程序员编写的程序变量赋予真正的初始值,执行静态代码块

4.使用

通过执行引擎执行相应类的方法

5.卸载

生命周期结束有以下几种情况:1、程序正常执行结束   2、执行中出现异常  3、操作系统出现异常  4、通过执行 system.exit()

类加载器的种类(主要)

启动类加载器(Bootstrap ClassLoader):负责加载JRE核心类库,像JRE中的rt.jar等(C/C++);

扩展类加载器(Extension ClassLoader):负责加载JRE扩展目录ext中的jar包;

系统类加载器(Application ClassLoader):负责加载ClassPath路径下的类包;

类加载机制

1.全盘负责委托机制(比较古老)

当一个ClassLoader加载一个类时,需要按需加载其它类的时候,那该类也由这个ClassLoader载入,比如一个A类加载是由Application ClassLoader载入,这个A类引用了B类,这时B类也将由Application ClassLoader载入。

2.双亲委派机制(parent译义为双亲)

总结:

1.安全机制:防止用户自定义类篡改核心类库,比如自定义String.class类不会被加载,如果这个String类被加载了那相当于Java的String类被替代了。这是不允许的。

2.避免类的重复加载:当父类ClassLoader加载了一个类的时候,这个类不需要被其它ClassLoader再次加载。

最新文章

  1. svn迁移gitlab,构建前端打包发布流程
  2. 用 Excel 测试“绘制两点间连线”的算法
  3. sqlserver 2008 数据库表结构脚本及数据导出
  4. 手机触屏触摸特效javascript-TouchSwipe(依赖于jquery库)中文说明
  5. kafka集群zookeeper集群详细配置
  6. 金蝶BOS
  7. eq相等 ,ne、neq不相等 EL表达式
  8. PC-博客首页中增加必应或GOOGLE搜索功能
  9. 分分钟教你集成沉浸式侧滑关闭Activity
  10. C# List<T>的详细用法
  11. C#打印杨辉三角
  12. java之servlet入门操作教程一续
  13. quartz定时任务实例
  14. (后端)Sql Server日期查询-SQL查询今天、昨天、7天内、30天(转)
  15. SQL SERVER按多字段查找重复的数据并删除只保留一条
  16. react-native中的请求数据
  17. NginxI/O模型理论基础
  18. Mongo分区后分片下count记录不准确
  19. QQ公众号?是的,你没看错!
  20. JavaScript学习总结(十三)——极简主义法编写JavaScript类

热门文章

  1. 【转】Linux下常用压缩 解压命令和压缩比率对比
  2. Service Broker 消息队列的方式实现数据同步
  3. webSocket的场景应用
  4. 简单的JAVAWeb选课系统
  5. WebLogic 12c 版 下载与安装(ubuntu)
  6. mybatis+mysql批量插入和批量更新
  7. Jekyll添加FancyBox 插件
  8. 【题解】间隔排列-C++
  9. focus([[data],fn]) 当元素获得焦点时,触发 focus 事件。
  10. Web service stop after running serveral hours