11-JVM整体结构

整体结构

在这里插入图片描述

结构分为:
本地引擎,程序计数器
JVM栈,JVM堆,方法区

上图太过详细

class -> classLaoder
	load -> link -> init
运行时数据区
	方法区,java 栈,本地方法栈,堆,程序计数器
执行引擎,本地方法接口,本地执行引擎

JIT 编译器

将热点代码,缓存为机器码. 在下次调用的时候直接执行.
经常出现在 栈顶的 代码,
程序计数器中数据较大的. 视为热点代码
经常调用的方法和 经常循环执行的部分代码. 视为热点代码

Load

Load
	元数据: 存放在方法区. 在 class 加载之后
Link
	校验: 校验class 是否正确
	准备:  为 static 生成 cinit 方法
		不会为 final 修饰的 static 赋值. 因为 final 在编译完后已经赋值了
		不会为 实例变量分配初始化
	解析: 将符号引用解析为 直接引用
Init

赋值

在这里插入图片描述

可以 在 static 块中对后面的 static 变量赋值. 但是不能主动使用

类加载器

自定义

自己 定义实现类加载器

实现

继承 ClassLoader  或 URLlClassLoader

可以用来 隔离加载类,修改类加载方式,扩展类来源. 防止源码泄漏

Java内置

BootStrap:
	使用 C/C++实现. 用来加载 Extension,System 加载器.
Extension:
System:

在这里插入图片描述

常用方法

在这里插入图片描述
在这里插入图片描述

类加载

一个类 在某些情况下是会 加载到方法区的
1. 创建类实例
2. 对该类或接口静态变量访问或赋值
3. 调用静态方法
4. 反射
5. 初始化该类的子类
6. Java虚拟机启动时标记为启动类的类
7. MethodHandle 实例解析结果
	JDK7 提供的特性

运行时

方法区,堆,栈,本地方方法栈,程序计数器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值