初识JVM-2021-06-22

一、初识JVM

1、jvm执行.class的顺序

在这里插入图片描述

1、.java文件经过编译生成.class文件

2、.class文件经过加载(加载、连接、初始化)进入运行时数据区

​ a、使用加载器通过流的方式加载到内存空间。

​ b、对数据进行检查、准备(变量加载默认值等)、解析

​ c、初始化数据

3、运行时数据区: 本地方法栈、虚拟机栈、程序计数器、方法区、堆空间

4、执行引擎、本地库接口

2、类装载系统

1、组成:加载、链接、初始化

2、①加载:引导类加载器 -> BootStrapClassLoader

​ 自定义加载器 -> 间接继承ClassLoader的加载器(包含:ExtensionClassLoader(扩展类加载器)、ApplicationClassLoader)

​ ②BootStrapClassLoader加载器:负责加载java核心类(Launcher.getBootstrapClassPath()可以获取他负责的包)

​ ③ExtensionClassLoader: 负责jre/lib/ext下的类

​ ④ApplicationClassLoader负责我们应用的类

3、①链接:验证、准备、解析

​ ②验证:每一个.class文件都会有一个魔法值,16进制为CAFEBABE(咖啡宝贝)

3、运行时数据区

1、组成:PC计数器,本地方法栈,jvm栈,堆,方法区

2、PC计数器:记录各个栈帧运行的位置;不存在GC、不存在OOM

3、本地方法栈:使用C语言编写的方法;不存在GC,会出现栈溢出异常

4、jvm栈:所有非本地方法运行的地方,每一个运行方法对应一个栈帧;不存在GC,会出现栈溢出异常(StackOverFlowError)

5、堆:JDK1.8后在hotspot虚拟机中所有对象、常量池、静态变量等都存在堆中

6、方法区:及存放类、方法等的地方,JDK1.8又称元空间

4、执行引擎

1、执行引擎:在JDK1.8中使用的有解释器、即时编译器(JIT)

2、解释器优点是及时性,缺点是速度慢

​ 即时编译器的优点是速度快,却点是第一次编译耗时长

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值