关于JVM加载class文件和类的初始化

1.JVM加载Class文件的原理机制

1.1.装载

  查找并加载类的二进制数据

1.2.链接

  验证:确保被加载类的正确性。(安全性考虑)

  准备:为类的静态变量分配内存,并将其初始化为默认值。(比如static int a  = 10 这里给a的默认初始值为0)

  解析:把类中的符号引用转换为直接引用。

1.3.初始化

  为类的静态变量赋予正确的初始值。(这个时候a的值才为10)

2.类在什么时候被初始化

  1)创建类的实例,也就是new一个对象。

  2)访问某一个类的或者接口的静态变量,或者对该静态变量赋值

  3)调用类的及静态方法

  4)反射Class.forName("xxx.xxx.xxx")()

  5)初始化一个类的子类(会首先初始化子类的父类)

最新文章

  1. C++-不要在构造和析构函数中调用虚函数
  2. 蒋金楠How ASP.NET MVC Works?[持续更新中…]
  3. 《APUE》第6章笔记
  4. eval、json.parse()的介绍和使用注意点
  5. C#模板打印excel
  6. 关于Mongdb的java的CRUD操作
  7. scrapy_Response and Request
  8. java排序算法(九):归并排序
  9. UNICODE与ASCII
  10. python 识别图片上的数字
  11. selenium java maven testNg环境搭建
  12. filter帅选
  13. 关于${pageContext.request.contextPath}的理解 (转载)
  14. [luogu4551][POJ3764]最长异或路径
  15. CCPC-Wannafly Winter Camp Day4 Div1 - 置置置换 - [DP]
  16. c#: List.Sort()实现稳固排序(stable sort)
  17. python处理json格式的数据
  18. 安卓获取ListView、GridView等滚动的距离(高度)
  19. 【剑指offer】输入一个链表,输出该链表中倒数第k个结点。
  20. BZOJ 1003--[ZJOI2006]物流运输(最短路)

热门文章

  1. git开发常用命令
  2. activemq读取剩余消息队列中消息的数量
  3. windows server 2016 x64用MecaCli工具检查raid5磁盘状态
  4. 我的Windows日常——Win7完美兼容tsmmc.msc的方法
  5. Java基础系列--04_数组
  6. Nginx作为HTTP服务器--Nginx配置图片服务器
  7. Java Web Token - JWT
  8. linux ps aux 各列内容说明
  9. xml错误之cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'mvc:annotation-driven'.
  10. mysql数据库中插入数据INSERT INTO SET的优势