java 虚拟机【一个demo 学习--jvm 运行时数据区(五)】

程序其实就是  数据 指令 控制

 

一 程序计数器    当前线程正在执行字节码指令的地址(行号)

 

虚拟机栈  每一个方法是一个帧栈,存储当前线程运行方法时 用到的 数据 指令 和返回地址

方法中 有变量 --》 有存储变量的  局部变量表(this 变量 对象引用)

方法中 有计算 比如  两个变量求和、 计算的时候 需要地方存储 -->操作数栈

动态链接   一个接口 Service 有两个实现类 ServiceA ServiceB  当,service.do() ,调用方法的时候  service 调用方法的时候,需要service 动态链接去获取一个实例, 为何存到 service.do()  调用的时候才会别解析,

方法出口  就是返回地址

方法区  类信息  常量  静态变量  JIT

 

中间字节码可以确定大小

 

线程值执行单元  线程执行方法 需要 数据 指令 返回地址  存储一个地方

 

 

 

 

javap -v  xxx.class 可以获取反编译文件

 

举例:  int j=0;

首先 将0 压栈, 就是将 0 存到 操作数栈中, 然后将 0 出栈,赋值到 局部变量表 j 中

 

xss 栈的深度  栈是有限的  超过会报错  StackOverFlowError

 

 

jvm 内存模型 JMM

 

复制回收算法, 一个对象  new 8M()  ,放入到 eden 区,后来 又来了 一个 new 1M 这时候,eden 已经存不下, 8M 就到老年代

 

 

meta Space  是可以动态扩容的

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值