简单理解Java类加载机制
来源:互联网 发布:展厅装修设计软件 编辑:程序博客网 时间:2024/06/15 13:52
JSON Code
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Java类加载的全过程
1、加载
>>将class文件放入内存,并将静态的二进制代码转换成方法区中运行时的数据结构(在方法区进行) 并产生一个java.lang.Class(位于堆中)
比如说现在有一个T.java的文件,使用命令行javac T.java将.java文件编译为.class文件,在程序中使用到T这个类时,类加载其就把T.class这个文件
从硬盘(.class文件不仅仅来自硬盘,说白了.class文件就是一个字节数组)中加载到内存中,把.class文件中包含的类信息(静态数据)放入内存并组装为
运行时数据结构,然后在堆里面创建一个和类T相关的java.lang.Class的实例,这个实例可以指向方法区中的类信息(静态域,静态方法,静态块,类的代码等)
**这也是反射的核心,通过某个类对应的Class文件找到类的各个属性(字段,方法,构造器等)
**t3指向T3类的实例对象,t3类的实例对象有一个引用指向了其对应的java.lang.Class的实例,该实例有一个引用指向了方法区中T3类对应的类型信息
2、链接
将java类的二进制代码合并到jvm的运行状态之中的过程
验证:确保加载的class文件符合jvm的规范,没有安全问题
准备:正式为类变量(static变量)分配内存并设置其初始值(在方法区中进行)
连接:将虚拟机中的符号引用替换为直接引用
3、初始化
初始化的过程是执行类构造器<clinit>的过程,由编译器自动收集静态方法块和静态变量生成类构造器并执行
T3中的静态变量a和静态代码块组成了类构造器(类构造器按照代码中先后顺序组装),在初始化的时候加载这个类构造器
虚拟机能保证一个类构造器<clinit>在多线程环境中正确的加锁同步
**有时候单例就是利用这个特性
初始化的过程中如果发现其父类没有初始化就先初始化其父类
1、加载
>>将class文件放入内存,并将静态的二进制代码转换成方法区中运行时的数据结构(在方法区进行) 并产生一个java.lang.Class(位于堆中)
比如说现在有一个T.java的文件,使用命令行javac T.java将.java文件编译为.class文件,在程序中使用到T这个类时,类加载其就把T.class这个文件
从硬盘(.class文件不仅仅来自硬盘,说白了.class文件就是一个字节数组)中加载到内存中,把.class文件中包含的类信息(静态数据)放入内存并组装为
运行时数据结构,然后在堆里面创建一个和类T相关的java.lang.Class的实例,这个实例可以指向方法区中的类信息(静态域,静态方法,静态块,类的代码等)
**这也是反射的核心,通过某个类对应的Class文件找到类的各个属性(字段,方法,构造器等)
**t3指向T3类的实例对象,t3类的实例对象有一个引用指向了其对应的java.lang.Class的实例,该实例有一个引用指向了方法区中T3类对应的类型信息
2、链接
将java类的二进制代码合并到jvm的运行状态之中的过程
验证:确保加载的class文件符合jvm的规范,没有安全问题
准备:正式为类变量(static变量)分配内存并设置其初始值(在方法区中进行)
连接:将虚拟机中的符号引用替换为直接引用
3、初始化
初始化的过程是执行类构造器<clinit>的过程,由编译器自动收集静态方法块和静态变量生成类构造器并执行
T3中的静态变量a和静态代码块组成了类构造器(类构造器按照代码中先后顺序组装),在初始化的时候加载这个类构造器
虚拟机能保证一个类构造器<clinit>在多线程环境中正确的加锁同步
**有时候单例就是利用这个特性
初始化的过程中如果发现其父类没有初始化就先初始化其父类
视频教程: http://pan.baidu.com/s/1i53n9IX(尚学堂高琪jvm)
阅读全文
1 0
- 简单理解Java类加载机制
- 深入理解java虚拟机【类加载机制】
- 深入理解Java类加载机制
- 【深入理解Java虚拟机】类加载机制
- Java类加载机制的理解
- 深入理解java类加载机制
- JAVA虚拟机 类加载机制理解
- java类加载机制的简单知识
- 深入理解java:类加载机制 和 反射机制
- java虚拟机类加载机制---《深入理解java虚拟机》读书笔记
- Java虚拟机类加载机制---深入理解Java虚拟机
- 深入理解Java虚拟机--Java虚拟机类加载机制
- java类加载机制--《深入理解java虚拟机》
- 简单理解java反射机制
- 简单理解java反射机制
- 深入理解java虚拟机-4 虚拟机类加载机制
- 深入理解Java:类加载机制及反射
- 深入理解Java虚拟机----(六)类加载机制
- Android更新UI的两种方法——handler与runOnUiThread()
- 列表选择框(Spinner)
- 【案例】国家信息中心:国家公共资源交易服务平台一期工程决策支持服务系统定制项目
- 阿里云天池工业AI大赛暨中国“印象盐城,数创未来”大数据竞赛正式启动
- Check failed: shape[i] >= 0 (-1 vs. 0)错误
- 简单理解Java类加载机制
- 金融科技&大数据产品推荐: 数美金融风控—构建立体的全业务流程风控体系
- 分布和集群的区别
- 微信房卡模式棋牌游戏开发的关键环节
- shell脚本归纳总结(一)
- iOS视频播放API
- 使用Java实现Xmodem协议
- easyui-textbox与easyui-combobox的onChange事件
- 弹出层随屏滚动