我们写完的java代码是怎么运行的呢?

".java"文件,编译成".class"文件,然后类加载器把".class"字节码文件中的类给加载到jvm中

接着是jvm来执行我们写好的那些类中的代码.

jvm在什么时候会加载一个类?

在你的代码中需要用到这个类的时候

类的加载过程

加载->验证->准备->解析->初始化->使用->卸载

加载

类加载器

  1. 启动类加载器 Bootstrap ClassLoader JVM启动,首先就会依托启动类加载器,加载java安装目录下lib目录中的核心类库
  2. 扩展类加载器 Extension ClassLoader 加载lib/ext目录中的类
  3. 应用程序类加载器 Application ClassLoader 这类加载器负载加载"ClassPath"环境变量所指定的路径中的类,大致可以理解为去加载写好的代码
  4. 自定义类加载器 除上面几种外,可以自动以类加载器,根据自己的需求加载你的类

双亲委派机制

JVM类加载器是有亲子层级结构的,就是说启动类加载器是最上层,扩展类在第二层,第三层是应用程序类加载器,最后一层是自定义类加载器

假设你的应用程序类加载器需要加载一个类,他首先会委派给自己的父类加载器去加载,最终传导到顶层的类加载器去加载,如果父类加载器在自己负载的范围内,没找到这个类,那么久会下推加载权利给自己的子类加载器

验证

这个步骤是根据Java虚拟机规范,来校验你加载进来的".class"文件中的内容是否符合指定的规范

假如你的".class"文件被人篡改了,里面的字节码根本不符合规范,那么JVM是没法去执行这个字节码

准备

给类来分配一定的内存空间,包括类变量的内存空间,并且给一个默认的初始值,如int 类型分配一个"0"这个初始值,布尔类型的默认为false

解析

这个阶段实际上是把符号引用替换为直接引用的过程

初始化

为类的静态变量赋予正确的初始值,如果发现这个类的父类没有初始化,会先暂停,然后去初始化父类,也是走类加载的一套流程,直到父类加载完了,再执行子类的初始化

未能成功加载扩展程序_JVM类加载 - 大碗炸酱面相关推荐

  1. 未能成功加载扩展程序_【JAVA虚拟机(JVM)精髓】09-几种不同的类加载器

    持续更新JVM相关知识,敬请关注: Java虚拟机精髓专栏​zhuanlan.zhihu.com 上一节说了下类加载器和类加载过程.这一节我们看下几种不同的类加载器. JVM支持的类加载器有两类,分别 ...

  2. 未能成功加载扩展程序

    将Switchy1.crx改为Switchy1.rar 解压缩Switchy1.rar 得到Switchy1 将Switchy1加载至goole

  3. win7 exfat补丁_win7电脑玩斗仙游戏提示主动防御系统未能成功加载如何解决-系统城...

    斗仙游戏是很多win7系统玩家喜欢的一款大型多人网络游戏,可是近日有用户在游戏中加载"主动防御系统",然后启动的时候提示主动防御系统未能成功加载,为了您的账号安全,游戏将自动退出, ...

  4. 如何解除Chrome无法安装第三方插件的限制(无法从该网站加载扩展程序和用户脚本)

    2018年6月谷歌宣布将废除 Chrome 扩展的内联安装方式(inline installation).所以说,自Chrome 67版本开始,谷歌调整Chrome的插件安装策略,只允许用户在应用商店 ...

  5. eclipse javafx找不到或无法加载主类_JVM类加载

    类的生命周期 加载,验证,准备,初始化,卸载 这五个阶段先后顺序是确定的.但是解析阶段不一定:它在某些情况下可以在初始化阶段之后再开始,这是为了支持Java语言的运行时绑定(动态绑定或晚期绑定). 静 ...

  6. 解决谷歌无法加载扩展程序

    方法一 1.先将下载的文件.crx格式修改为.zip 2.然后解压zip格式文件. 3.选择加载解压过的zip文件.即可 方法二 1.在Google Chrome浏览器的桌面快捷方式上鼠标右键,选择属 ...

  7. 模块化加载_Java9模块化的类加载机制实现剖析

    前言 JDK9引入了Java模块化系统(Java Platform Moudle System)来实现可配置的封装隔离机制,同时JVM对类加载的架构也做出了调整,也就是双亲委派模型的第四次破坏.前三次 ...

  8. ccs加载out文件_类加载流程、类加载机制及自定义类加载器详解

    原文:juejin.im/post/5cffa528e51d4556da53d091 一.引言 当程序使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载.链接.初始化三个步骤对该类进行类加载 ...

  9. 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包。

    最近在升级 Visual Studio 2015 Update 3 的过程中,等了很长时间都没一点进展,于是就强行终止了升级程序,但VS也因此出了问题. 后来经过修复,不行,卸载再重装,仍然提示这个错 ...

  10. 未能加载文件或程序集_完美解决未能正确加载Visual C++资源编辑器包问题

    问题:在使用VS2010过程中,出现未能正确加载"Visual C++ Resource Editor Package"的错误提示,同时工程的资源文件不能打开,出现加载失败. 原因 ...

最新文章

  1. 关于loader加载的东西必须是继承sprite
  2. 一次生产事故的优化经历
  3. boost::recursive_mutex相关的测试程序
  4. Redis中的set 集合
  5. java异常—— finally 子句+带资源的 try语句
  6. 【精华】详解Qt中的内存管理机制
  7. 耗材领用登记系统php_实验室的试剂耗材管理为啥要实现系统管理?
  8. Oracle行迁移和行链接
  9. AMD官宣350亿美元收购赛灵思 赛灵思大涨8.56%
  10. 重置系统_WIN10系统如何创建密码重置盘
  11. 教孩子学编程python 代码_天津哪有教孩子学编程python
  12. 基于MATLAB的车牌识别实现
  13. k8s常见问题大收集
  14. C# - 2017微软校园招聘笔试题 之 MS Recognition[待解决]
  15. Unsupervised Domain Adaptation via Structurally Regularized Deep Clustering-CVPR2020
  16. centos6 安装 nscd 清除DNS缓存
  17. 数字人民币智能合约的一个颠覆式创新应用
  18. 毛笔字识别--详细注释解析恩培作品6
  19. Java 效率工具 Lombok 使用教程
  20. vs2005 无法启动程序 系统找不到指定的文件---解决方案

热门文章

  1. Android仿微信地图定位和位置选择(上)
  2. 讯飞输入法pad版x86_讯飞输入法Pad版下载
  3. moxie php,PHP仿微信多图片预览上传功能
  4. 【转】MapGIS K9基础系列(二)
  5. 【游戏开发题库】使用Unity制作Unity题库,支持题目录入和刷题(面试 | 笔试 | 自制题库 | 从基础到高级)
  6. 【整数规划算法】分支定界法及其Python代码实现
  7. 企业微信怎么批量加人?怎么管理员工?看看这套系统
  8. pdf加水印的方法,pdf如何加水印?
  9. 知乎运营怎么搞?开展知乎营销的流程和形式
  10. 卡诺模型(用户需求分析模型)