类的加载方式

1、隐式加载:new

2、显式加载,loadClass,forName 等

loadClass 和 forName的区别

类的装载过程

1、加载:通过classLoader加载class文件字节码,生成Class对象,将这些数据放到运行时数据区的方法区中,在运行时,在数据区堆中生成一个代表该类的java.lang.class的字节码文件,这个文件会被用来当做访问入口

2、链接:

2.1 校验: 检查加载的class的正确性和安全性(检查格式)

2.2 准备:为类变量分配存储空间并设置变量初始值

2.3 解析:JVM将常量池内的符号引用转换为直接引用(这个步骤是不是必须的)

3、初始化:执行类变量赋值和静态代码块

forName---》调用这个方法的话,会进行初始化的,则会执行类变量赋值和静态代码块。例如:Class.forName("com.mysql.jdbc.Driver") ,点进去Driver代码里面看,就知道,里面是有写静态代码块的。

loadClass---》不会进行初始化步骤。例如:spring ioc 中大量使用了懒加载,这个时候大量是哦也能改了loadClass。存在就是合理的

最新文章

  1. Smack Message扩展,添加自定义元素(标签)经验分享
  2. We Know What @You #Tag: Does the Dual Role Affect Hashtag Adoption-20160520
  3. Robot Framework--10 万能的evaluate
  4. .Net如何在后台设置日期格式,并显示在前台页面上
  5. Jenkins 2.26 发布,可扩展的持续集成引擎
  6. centos用户权限设置
  7. UIScreen UIWindow UIView
  8. 深度剖析JDK动态代理机制
  9. BZOJ 2733: [HNOI2012]永无乡(treap + 启发式合并 + 并查集)
  10. boost uuid
  11. POJ 2632 Crashing Robots(较为繁琐的模拟)
  12. POJ1149 PIGS 【最大流量】
  13. eclipse安卓引入库项目的正确方法
  14. 知问前端——html+jq+jq_ui+ajax
  15. python scrapy框架爬取豆瓣
  16. ionic报错: Failed to load resource
  17. windows下使用kafka的常用命令
  18. 前端调用接口报错看不到报错响应时 console.dir
  19. docker 私有仓库 harbor docker-compose
  20. myeclipse(eclipse)IDE配置

热门文章

  1. fileupload简单使用
  2. 黑客攻防技术宝典web实战篇:核心防御机制习题
  3. 状压dp小结 By cellur925
  4. PHP读取MySQL数据
  5. 使用statement接口实现增,删,改操作
  6. 500 Keyboard Row 键盘行
  7. 微服务dubbo面试题
  8. ML——决策树模型
  9. linux高负载下mysql数据库彻底优化
  10. JDK NIO SelectionKey bug