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

从源码到类文件

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

简单来说就是编译过程。

从类文件到虚拟机

装载:查找导入class文件

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

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

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

初始化:静态量真正赋值

类加载器

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

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

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

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

自己的掌控:自己写的class

类加载的特点

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

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

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

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

时间: 2024-08-26 08:00:53

喵星之旅-沉睡的猫咪-类加载机制的相关文章

喵星之旅-沉睡的猫咪-门面模式

门面模式是什么? 当一个系统的功能越来越强,子系统会越来越多,客户对系统的访问也变得越来越复杂.这时如果系统内部发生改变,客户端也要跟着改变,这违背了“开闭原则”,也违背了“迪米特法则”,所以有必要为多个子系统提供一个统一的接口,从而降低系统的耦合度,这就是外观模式的目标. 门面模式又叫外观模式,提供了一个统一的接口,用来访问子系统中的一群接口.其主要特征是定义了一个高层接口,让子系统更容易使用,属于结构型模式.可以理解为接口的封装. 门面模式有哪些应用? 项目开发中不同分层.对于一个功能,如果

喵星之旅-沉睡的猫咪-面向对象的设计原则

一.设计原则是什么? 有句话叫“人民群众是历史的创造者”,他的意思我理解为任何的理论都是基于具体的客观展现总结出来的,没有人民创造的既定事实,就无法出现任何的有理有据的理论模型. 对于面向对象的软件设计,最著名的一本书就应该是当年gof的那一本<设计模式:可复用面向对象软件的基础>.设计模式是面对具体问题,进行抽象分类,然后总结出来的行之有效的解决方案,就像人去创造历史.设计原则是进一步研究这些解决方案,进一步抽象出的指导思想. 如果把设计模式比喻成传统数学,即“1+1=2”的那套理论,那么设

喵星之旅-狂奔的兔子-基于docker的rabbitmq安装

docker安装参考:喵星之旅-狂奔的兔子-docker安装和基本使用 一.查询镜像名称 由于我们要安装的是有web管理页面的,不能直接拉取,需要指定版本. 登录docker仓库查询:https://hub.docker.com/ 查询位置输入 rabbitmq 右侧结果第一个就是,点击进去 页面下拉就会有各种可选择的版本号 选择带有“mangement”的版本 3.8-management 二.创建容器 1.拉取镜像 docker pull rabbitmq:3.8-management 2.

喵星之旅-狂奔的兔子-基于docker的redis分布式集群

一.docker安装(略) 二.下载redis安装包(redis-4.0.8.tar.gz) 以任何方式获取都可以.自行官网下载. 三.拉取centos7的docker镜像 命令:docker pull centos:7 这种基于操作系统的安装也适合虚拟机.真机等环境,而且之前查询资料也都是这种情况开始,没有看到直接跳过这步的样例. 四.创建docker网络 由于集群环境要求有明确的ip配置,需要提供固定ip,所以这里创建容器时指定ip,这就要求有可用的网络信息. docker network

NABCD模型(猫咪记单词)

项目需求分析与建议-NABCD模型(猫咪记单词) N (Need 需求) 对于现在的学生,尤其是大学生来说,学习英语是一件非常重要的事.我们有四级六级托福雅思等各种各样的英语方面的考试.而学习英语,很重要的就是词汇量,那么如何提高词汇量呢,无疑就是背单词了.但是单纯的背单词太过单调乏味,很难坚持下来.所以寻找一些合适的,更易于接受的背单词学习英语的方法就很有必要了. A (Approach 做法) 为了解决这个单纯的背单词枯燥难以坚持的问题,我们设计了猫咪记单词.学生们每天接触的最多的不是书,而

软件需求分析之猫咪记单词

软件需求分析之猫咪记单词 一.软件设计目标 目前,所有学生都面临学习英语的问题.在大学生中学生对于手机的应用十分频繁,所以我们设置单词解屏,可以使学生拿起手机就学习英语,提高学习效率,应用零散时间. 二.面向用户 本单词解屏面向的对象为所有会学习到英语的学生:四级.六级.托福.雅思等.主要是要考四六级的大学生,或者要出国学习的学生,或者在生活中热爱英语的人. 三.功能实现 我们主要有词库选择,词数设置,已学词量三个功能.词库选择:对词汇的类型进行选择,如四六级.托福.雅思等. 词数设置:对解屏的

猫咪记单词——NABCD模型分析

N ——Need 需求:学习英语是一件非常重要的事.面对各种各样的考试,学习英语,最重要的就是词汇量,背单词是提高词汇量的最直接的方法,但是单纯的背单词太单调.寻找一些合适的,更易于接受的背单词学习英语的方法. A ——Approach 做法:为了解决这个单纯的背单词枯燥难以坚持的问题,我们设计了猫咪记单词.通过锁屏的方式,来让用户每次解锁时都能学习英语. B ——Benefit好处:有了这个软件之后,不用每天抱着一本大厚书学习新单词还要复习旧单词,只要拿着手机,在解屏的时候看几眼随便蹦出来的单

使用SVG画猫咪

SVG画简易小猫咪: 第一幅图是别人的,图2是自己画的 -----------------------------分割线---------------------------- 代码部分: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>好玩的SVG---可爱的小猫咪</title> </hea

竖屏小游戏--喵星战争源代码分析【完整】

 转载请注明出处:http://blog.csdn.net/oyangyufu/article/details/26942311 源代码地址:http://download.csdn.net/detail/oyangyufu/7409593 Ccp文件介绍: GameMenuScene.cpp游戏主菜单 GameMainScene.cpp游戏主页面 GameObjHero.cpp主角 GameHeroBullet.cpp主角的子弹 GameObjEnemy.cpp敌人 GameEnemyBull