Java类加载机制
2016-03-03 09:40
260 查看
系统可能会在第一次使用某个类的时候加载这个类,也有可能使用类加载机制加载某个类。
同一个JVM中所有线程,变量都处于同一个进程里,他们都是用该JVM的内存。
类加载分为三个步骤:加载、链接、初始化。
加载:
类加载指的是将类的Class文件读入内存,并创建一个java.lang.Class对象。
链接:
链接阶段会把加载完成的Class的二进制数据合并到JRE中。会为类的静态Field分配内存,并设置默认值。
初始化:
主要是对类的静态Field进行初始化。在类中对静态Field指定初始值的方法有两种1:声明静态Field是指定初始值 2:在静态代码块中为静态Field指定初始值。
都会被当成类的初始化语句,并按照顺序执行。
另外某个类的父类还未被初始化,则先初始化他的直接父类。如果直接父类有父类,还会初始化父类的父类。所以JVM最先初始化的总是Java.lang.Object类。
同一个JVM中所有线程,变量都处于同一个进程里,他们都是用该JVM的内存。
类加载分为三个步骤:加载、链接、初始化。
加载:
类加载指的是将类的Class文件读入内存,并创建一个java.lang.Class对象。
链接:
链接阶段会把加载完成的Class的二进制数据合并到JRE中。会为类的静态Field分配内存,并设置默认值。
初始化:
主要是对类的静态Field进行初始化。在类中对静态Field指定初始值的方法有两种1:声明静态Field是指定初始值 2:在静态代码块中为静态Field指定初始值。
都会被当成类的初始化语句,并按照顺序执行。
另外某个类的父类还未被初始化,则先初始化他的直接父类。如果直接父类有父类,还会初始化父类的父类。所以JVM最先初始化的总是Java.lang.Object类。
相关文章推荐
- Java的Struts2框架配合Ext JS处理JSON数据的使用示例
- Spring Data JPA简单实例
- java中大数类的学习
- 转:java中scanner类的用法
- java模糊搜索
- java进制间转换
- No_16_0302 Java基础学习第十天
- 【leetcode】【78】Subsets
- **spring mvc 整合hibernate 配置,弄了好几天
- spring mvc 返回方式:ModelAndView, Model, ModelMap, Map,View, String, void
- java通过正则表达式提取XML节点内容
- Java Class的field如果以小写t开头
- spring boot
- 深入了解java虚拟机
- java io 学习部分整理
- Spring配置文件详解
- Java正则表达式入门
- 深入 Java 调试体系: 第 1 部分,JPDA 体系概览
- spring+JDBC开发配置
- Spring--Bean 的配置方法