当一个程序调用某个类,这个类还没有被加载到内存中时,我们的系统会通过以下三个步骤来对该类进行初始化:

1、类的加载

类加载指的是将类的class文件读入内存中,并给它创建一个java.lang.Class对象。类的加载时由类加载器完成的,我们可以通过类加载器来加载以下来源的二进制数据:

--从本地文件系统加载class文件。

--从JAR包中加载class文件。

--从网络中加载class文件。

--将一个Java源文件动态编译,并进行加载。

2、类的连接

当类被加载后,系统就会生成一个Class对象,接着将二进制数据合并到JRE中。类连接又被分为以下几步:

--检验被加载的类是否有正确的内部结构,并且和其他类协调一致。

--为类的静态Field分配内存,并设置默认值。

--将类的二进制数据中的符号引用替换成直接引用。

3、类的初始化

类的初始化主要对静态Filed进行初始化,指定静态初始化可以通过声明静态Field时指定初始化值、可以通过静态初始化块为静态Field指定初始化值。

类的初始化主要按照以下步骤:

--如果这个类还没有被加载和连接,那么先加载后连接这个类。

--在执行第一个步骤时,应该去检查这个类的直接父类是否被初始化,如果没有初始化,就去先初始化它的直接父类(当然在初始化直接父类时,这个直接父类又有直接父类,还要去检查它的直接父类,以此类推)

--如果类中有初始化语句,那么依次去执行这些初始化语句。

转载请注明出处:http://blog.csdn.net/hai_qing_xu_kong/article/details/42609883     情绪控_

Java类加载笔记(1)相关推荐

  1. Java系列笔记(1) - Java 类加载与初始化

    2019独角兽企业重金招聘Python工程师标准>>> 目录 类加载器 动态加载 链接 初始化 示例 类加载器 在了解Java的机制之前,需要先了解类在JVM(Java虚拟机)中是如 ...

  2. JAVA 类加载机制学习笔记

    JAVA 类生命周期 如上图所示,Java类的生命周期如图所示,分别为加载.验证.准备.解析.初始化.使用.卸载.其中验证.准备.解析这三个步骤统称为链接. 加载:JVM根据全限定名来获取一段二进制字 ...

  3. 视频学习笔记------系统学习让你轻松定义 Java 类加载器

    视频地址:https://www.bilibili.com/video/BV1vJ41177cw 简介 类加载就是将磁盘上的class文件加载到内存中.本课程详细分析了从编写一个类到编译.加载的整个过 ...

  4. Java系列笔记(4) - JVM监控与调优【转】

    Java系列笔记(4) - JVM监控与调优[转] 目录 参数设置 收集器搭配 启动内存分配 监控工具和方法 调优方法 调优实例       光说不练假把式,学习Java GC机制的目的是为了实用,也 ...

  5. Java虚拟机笔记(五):JVM中对象的分代

    为什么要分代 为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能.你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用, ...

  6. Java系列笔记(3) - Java 内存区域和GC机制

    目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC(Garbage Collection, ...

  7. Java读书笔记(8)-单例模式

    Java读书笔记(8)-单例模式 今天在阅读<Effective Java 2>第3条时,获知一种使用枚举enum实现单例模式的新方法,然而书上并没有就此展开深入说明,于是上网查阅了一些资 ...

  8. 【java学习笔记day01】运行第一个程序Helloworld!

    java学习笔记day01 2.什么是软件工程师? 3.什么是软件? 4.开发软件需要计算机编程语言,计算机编程语言有很多,例如 c, c++,Java,NET,c#,php... 5.Java软件工 ...

  9. Alibaba独家首发“Java成长笔记”,差距不止一点点

    前言 关于技术人如何成长的问题,一直以来都备受关注,因为程序员职业发展很快,即使是相同起点的人,经过几年的工作或学习,会迅速拉开极大的差距,所以技术人保持学习,提升自己,才能够扛得住不断上赶的后浪,也 ...

最新文章

  1. SQLite的数据类型总结
  2. python3解析json数据_Python3高级教程
  3. mysql 5.7 centos 7_CentOS 7 下 MySQL 5.7 的安装与配置
  4. DCMTK:存储服务类用户(C-STORE操作)
  5. asp.net core系列 71 Web架构分层指南
  6. 批量下载baidu音乐主页的歌曲
  7. 【蓝桥杯单片机】实战之基础停表
  8. 人脸方向学习(十七):Face Detection-论文整理-解读
  9. JAVA之JDBC数据库连接池(超详细介绍)
  10. Easy AR Unity开发
  11. 计算机音乐奇迹再现乐谱,天谕手游奇迹再现乐谱代码分享
  12. #10064 「一本通 3.1 例 1」黑暗城堡(spfa+乘法原理)
  13. 剑指offe 替换空格
  14. 证券期货经营机构私募资产管理业务管理办法 2018年10月22日
  15. java 时间轮_基于时间轮的定时任务
  16. linux开机启动任务和定时执行任务
  17. springboot毕设项目美食网站设计与实现62e76(java+VUE+Mybatis+Maven+Mysql)
  18. 教师资格证面试题库中职计算机,2017年高中信息技术教师资格证面试真题及答案(第四批)...
  19. 关于Latex中生僻字显示问题
  20. Mac软件:15个提升办公效率的软件

热门文章

  1. [python] 溜了,溜了,七牛云图片资源批量下载 自建图床服务器
  2. P1155 双栈排序(二分图染色)
  3. 多态实现机制:静态分派和动态分派
  4. 《企业大数据系统构建实战:技术、架构、实施与应用》一3.2 如何选择解决方案...
  5. Hadoop三种安装模式
  6. runtime运行时编程一些相关知识
  7. 在C#用GDI+实现图形图像的任意变形效果(转载)
  8. 在OperaMasks中使用ELite和JRuby动态语言的秘笈
  9. 【6】Zookeeper脚本及API
  10. Android activity生命周期