首页 > 其他分享 >JVM类加载

JVM类加载

时间:2022-08-23 15:49:05浏览次数:60  
标签:初始化 字节 static 引用 JVM class 加载

类加载

Person.java文件

javac Person.java 生产 Person.class

javap -p -v Person.class

 

 

 

进行类加载: 是要将class文件转换为机器码 实现跨平台(不同的jdk)

加载-链接(验证-准备-解析)-初始化-使用-卸载

 

>加载:字节码文件加载到内存(字节码文件----字节流---类加载器)

>符合冯诺依曼模型  输入 存储 处理逻辑(运算 控制) 输出

 

本地系统直接加载

网络.class加载

归档文件加载

动态编译(动态代理)

机密文件获取

 

将字节流静态存储结构 转化为方法区的运行时数据结构  生成一个代表加载的类 java.lang.class 作为方法区的数据访问入口  

 

可以作什么?

自定义类加载器,agent(应用探针),动态代理

 

>链接

 

验证:

1.jdk版本  字节码文件格式正确性 (字节流能够正确解析 转存)

2.元数据验证

3.字节码验证

准备:

为类变量分配内存 并且设置为初始值

栗子:

private static int a = 1;  a=0;准备阶段为0;

final 修饰 static不包含 编译时初始化直接代入

不会为非static初始化。构造器进行

同时被static final 修饰的属性 constantValue属性  局限为基本数据类型和String   因为常量池只能引用到基本数据类型和String    

解析:

符号引用 转换为 直接引用

 

>初始化

 

主动引用 new class.forName 访问类静态变量 子父类初始化  启动类自动初始化

被动引用

 

双亲加载机制:app-ext-bootstrap

Jvm

jvm作用:从软件层面屏蔽不同操作系统在底层硬件与指令的区别

 

Jvm包含什么?

 

1.类装载子系统

2.运行时数据区

栈(别名方法栈:栈帧(局部变量表(局部变量),操作数栈(操作数),动态链接(符号引用转换为直接引用),方法出口))

本地方法栈 native

元空间(常量,静态变量,类信息)

程序计数器

3.字节码执行引擎

 

堆:

 

 

执行引用关系

 

 

标签:初始化,字节,static,引用,JVM,class,加载
From: https://www.cnblogs.com/li-xiaotian/p/16602486.html

相关文章

  • 导入证书到jvm
    通过curl可以获取tokencurl--cacertRoot_CA_cert.txt-XPOST-d"client_id=xxxx&client_secret=xxx"https://aip.test.com/access-token这样可以正常获取到to......
  • JDK JRE JVM
    关键字:JDK,JRE,JVM摘要:JDK是Java语言的软件开发工具包(SDK)。在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所......
  • mybatis 配置文件mybatis.xml的加载过程
    mybatis配置文件的整体加载过程mybatis几乎所有的用户相关的操作都是再SqlSession上进行的,儿sqlSession是由SqlSessionFactory调用openSession方法创建的.正常情况下......
  • 更改postgis的图层数据导致geoserver的服务图层加载错误
    一、情景复现数据存放在postgis,并且用geoserver进行了图层发布。现在有个需求,需要对某一图层的属性表进行编辑操作,待我操作完并保存后,刷新浏览器,服务url就报错了在geos......
  • JDK、JRE、JVM
    JDK、JRE、JVM的区别与联系注:B站狂神说Java教程学习笔记JDK:JavaDevelopmentKitJAVA开发者工具范围最大,包含JRE和JVM,含有开发者工具,可以进行Java编程、打包、编译等......
  • Mybatis 懒加载使用及源码分析
    Mybatis懒加载的使用什么是懒加载?懒加载的意思就是在使用的时候才去加载,不使用不去加载,相反的就叫饥饿加载或者立即加载。懒加载在Mybatis中一般是存在与联合查询的情况,......
  • cnpm : 无法加载文件 C:\Users\sq\AppData\Roaming\npm\cnpm.ps1,因为在此系统上
    1、在系统中搜索框输入WindosPowerShell2、点击“管理员身份运行”3、输入“set-ExecutionPolicyRemoteSigned”回车4、根据提示,输入A,回车5.再输入get-Execution......
  • jvm调优—内存模型
    https://blog.csdn.net/justloveyou_/article/details/71189093?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7E......
  • 来聊聊 OpenJDK 和 JVM 虚拟机
    自从Oracle收购Sun以后,Java世界也变了不少。好在Oracle还开源了个OpenJDK,并且很多东西都变了。OpenJDK就是一个桶,什么都可以往里面装,各大公司又纷纷推出自己的......
  • matery添加加载动画
    1、在主题/layout/_partial/目录新建一个loading-pages.ejs内容如下:<styletype="text/css"lang="css">#loading-container{position:fixed;t......