码迷,mamicode.com
首页 > 其他好文 > 详细

喵星之旅-沉睡的猫咪-类加载机制

时间:2020-04-05 20:29:51      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:程序   缓冲区   编译   自己   准备   语义分析   初始   tom   mil   

从源码到类文件

java文件—词法分析—tokens--语法分析--语法树--语义分析--注解抽象语法树--字节码生成器--class文件

简单来说就是编译过程。

 

从类文件到虚拟机

装载:查找导入class文件

验证:文件格式、字节码验证、符号引用验证等

准备:为静态量分配内存,初始化为“默认值”

解析:符号引用转换为直接引用(获取内存地址)

初始化:静态量真正赋值

 

类加载器

装载是通过类加载器实现的,java中有4个加载器:

最高级的顾问(外援):外部资源

高级长官(老大,一般人见不到):内部平台资源

可商讨的领导(可以找到的领导):classpath的引用

自己的掌控:自己写的class



类加载的特点

责任感就是当一个类加载器负责加载某个Class时,该Class所依赖和引用其他Class也将由该类加载器负责,除非明确指定让别人负责。

等级森严先让顶级加载器试图加载该Class,只有在顶级加载器无法加载该类时才尝试从低一级的加载器负责。通俗的讲,就是双亲委派。

记忆力超强也叫缓存机制。保证所有加载过的Class都会被缓存,当程序中需要使用某个Class,类加载器先从缓存区中搜寻Class,只有当缓存区中不存在该Class时,才会读取该类对应的二进制数据,并将其转换成Class对象,存入缓冲区中。所以修改了Class后,必须重新启动JVM,程序所做的修改才会生效。



喵星之旅-沉睡的猫咪-类加载机制

标签:程序   缓冲区   编译   自己   准备   语义分析   初始   tom   mil   

原文地址:https://www.cnblogs.com/kittybunny/p/12638691.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!