转自:

类加载顺序及加载过程详解

下文笔者讲述类的加载顺序及加载过程的详解说明,如下所示

java创建对象的方式分为以下四种

  new 反射克隆反序列化

class对象获取的方式分享

   //没有完成初始化过程Class clazz1 = 类名.class //没有完成初始化过程Class clazz2 = 类名.class.getClassLoader().loadClass("全限定名");//完成初始化过程Class clazz3 = Class.forName("全限定名")//此时对象已存在Class clazz4 = 对象引用.getClass(); 

class装载流程

1、加载 加载 class文件
2、链接[验证 准备 解析] 验证:如版本号是否正确,语法是否正确准备:申请内存,成员变量会给默认值不会赋值我们初始化的初始值解析:将二进制的符号引用转换为直接引用
3、初始化执行静态代码块为类的静态变量进行赋值

类的初始化

JVM执行类的初始化static语句为类的静态变量赋值初始化的详细步骤1.如果这个类还没有被加载和链接,那就先进行加载和链接2.如果这个类存在父类,并且父类还没有初始化,那就先初始化直接父类    3.如果类中存在初始化语句,依次执行初始化语句

class类是什么时候被初始化的呢?

创建类的实例(new xxxClass() Class.newInstance() constructor.newInstance())
访问类中的某个静态变量或对静态变量进行赋值
调用类的静态方法
class.forName("全限定类名")
完成这类的初始化,也会完成对本类的初始化(接口除外)
该类是程序引导人口(main入口或test入口)

类加载顺序及加载过程详解相关推荐

  1. 中yeti不能加载_第二十章_类的加载过程详解

    类的加载过程详解 概述 在 Java 中数据类型分为基本数据类型和引用数据类型.基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载 按照 Java 虚拟机规范,从 Class 文件到加载到内 ...

  2. Java类的加载过程详解 面试高频!!!值得收藏!!!

    受多种情况的影响,又开始看JVM 方面的知识. 1.Java 实在过于内卷,没法不往深了学. 2.面试题问的多,被迫学习. 3.纯粹的好奇. 很喜欢一句话: 八小时内谋生活,八小时外谋发展. 望别日与 ...

  3. Trembling ! Java类的加载过程详解(加载验证准备解析初始化使用卸载)

    [1]类的生命周期 一个类从加载进内存到卸载出内存为止,一共经历7个阶段: 加载->验证->准备->解析->初始化->使用->卸载 其中,类加载包括5个阶段: 加载 ...

  4. 类的加载过程详解:加载、验证、准备、解析、初始化

    想要弄明白的知识点: 类加载的过程,加载.验证.准备.解析.初始化.每个部分详细描述. 加载阶段读入.class文件,class文件时二进制吗,为什么需要使用二进制的方式? 验证过程是防止什么问题?验 ...

  5. Java虚拟机(JVM)之类的加载过程详解

    java程序在对某个类进行引用.使用时,就会开始对该类进行加载,比如直接使用类加载器进行显式加载.创建该类的对象.使用该类的类变量等情况.类的加载是通过java虚拟机的类加载子系统完成的.类的加载主要 ...

  6. jboss之启动加载过程详解(-)

    今天看了看jboss的boot.log和server.log日志,结合自己的理解和其他的资料,现对jboss的启动和加载过程做出如下总结: 本文以JBoss Application Server 4. ...

  7. JVM--类加载器详解

    42. JVM--类加载器详解 ● 类加载器子系统作用: 1. 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识. 2. ClassLoader只负责 ...

  8. 新手必看:访问url到加载全过程详解(看完不会我吃shi)

    新手必看:访问url到加载全过程详解(看完不会我吃shi) 1.放在前面:新手必须知道的那些概念 1.1 什么是IP.域名.主机名.url.服务器 1.2 http & https 1.3 O ...

  9. JVM------类加载器详解

    JVM------类加载器详解 1.图解类加载器工作流程 2.类加载器种类 3.类加载器的加载顺序 4.一些需要了解的机制 1.图解类加载器工作流程 2.类加载器种类 启动类加载器(Bootstrap ...

最新文章

  1. Memcached 之 .NET(C#)实例分析
  2. 利用wget 抓取 网站网页 包括css背景图片
  3. 剑指offer:链表中倒数第k个节点
  4. Verilog | HDL 音乐流水灯(代码类)
  5. mysql重置id排序_列替换法重置MySQL自增长ID排序
  6. 设计费收费标准2002修订_酒店装修设计费收费标准,酒店装修设计效果图
  7. DGL教程【一】使用Cora数据集进行分类
  8. EasyJoyStick使用以及两种操作杆 EasyJoyStick的使用方法,简单的不能再简单 Hedgehog Team-》Easy Touch -》Add Easy Touch For C#
  9. java二分查找递归_java学习之—递归实现二分查找法
  10. mssql访问 oracle
  11. 【Scala】scala ':' or newline expected \u200b
  12. idam oracle_oracle中的wm_concat对应达梦的是什么?
  13. 有哪些比较好用的安卓模拟器(电脑端)
  14. 【路由优化】基于能量均衡高效的LEACH协议改进算法附matlab代码
  15. day1.数据库初步了解
  16. REPEATABLE-READ隔离级别 事务中无法读到其它事务提交了的最新数据
  17. ESXi8.0中NVME硬盘不识别解决方法1,设置直通
  18. android天气预报sdk,Android手机集成天气预报功能方案:全国天气预报API调用
  19. JS中解决单击双击事件的冲突的问题
  20. 预备篇 I :范畴与函子

热门文章

  1. 【错解】【附正解】“科林明伦杯”哈尔滨理工大学第十届程序设计竞赛 - E 赛马
  2. Visual Studio2010当前不会命中代码,源代码与原始版本不同问题的解决方法
  3. webpack4踩坑——图片打包
  4. “68 道 Redis+168 道 MySQL”精品面试题(带解析),你背废了吗?
  5. JavaScript实现动态添加员工信息
  6. 创业者自述:都2020年了,我为什么还在做翻盖手机?
  7. B站回应HR称“核心用户都是Loser”、求职者是“白嫖党”:已被劝退
  8. MySQL数据库11——子查询语句
  9. python修改表格居中_Python使用openpyxl对xlsx表格合并单元格、设置单元格样式的操作...
  10. js清除浏览器缓存的几种方法(项目总结)