jvm进阶

把java文件加载成class文件的过程 1.验证 (看是不是java文件)2.准备(给静态变量赋初始值,跟我们赋的值无关,只跟类型有关)

3.解析 4.初始化  5(把磁盘的java文件(源文件)丢进jvm)

1.验证

2.准备

问题:如果static变量前面加final 也是在准备的时候赋值为默认值吗

答:在准备的时候不复制

类加载过程

进入命令终端:

语言无关性(跨无言):因为作为jvm不识别java语言还是什么scale语言等,只识别class文件(也就是字节码),语言只是一个规范

JVM内存结构

虚拟机栈(方法的入栈和)出栈

局部变量表 存局部变量和对象的引用

虚拟机栈为什么有操作数栈勒?

答:执行引擎在执行字节码的中间是有一些数据需要放在放在操作数栈的,类似于cpu

主内存缓存的架构

程序计数器的作用:

jvm类似于一个操作系统

对于操作系统:cpu时间片轮转机制,比如 线程a执行到13行 将要被阻塞或者挂起,线程b来执行,线程b执行完了,线程a从13行往下执行,所以要用程序计数器记录执行的行号,

jvm程序计数器跟操作系统的程序计数器其实是一个映射关系

程序计数器在jvm内存中唯一不会oom的  因为他只是计数 

虚拟机有多个方法为啥不需要多个程序计数器勒?

是因为一个线程不可能同时执行多个方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值