黑马jvm记录。

源代码底层过程?

java 源代码 转为 二进制字节码 ;
二进制字节码再通过解释器 转为机器码 提供给CPU

1.0 程序计数器

通过寄存器 来实现的
记录下一条jvm指令的执行地址; 解释器铜锅程序计数器 重写回到 字节码中。
特点:

  • 线程私有的 (不同的线程 有不同的程序计数器; 线程私有 不会有并发问题;随着线程创建和销毁)
  • 不会存在内存溢出的问题

在这里插入图片描述

2.1 虚拟机栈 (栈帧 每个方法运行时所需要的内存 )

  • 栈帧 : 参数,局部变量 , 返回地址

垃圾回收 是否涉及栈内存?

不涉及 ; 只处理堆内存。

栈内存分配越大越好吗?

默认是 1024 ; win 则依赖于虚拟内存。
栈内存越大 ,线程数会变少。 总内存不变,内存越大数量越少。

方法内的局部变量是否线程安全

  • 如果方法内局部变量没有逃离方法的作用访问,他是线程安全的。
  • 如果局部变量引用了对象,并逃离方法的作用方法,需要考虑线程安全。

变量对于线程是共享的 还是私有的?
一个线程对应一个栈帧 (对应新的局部变量);

eg: static 是共享的 ; 会有线程安全的问题

什么样的程序是线程不安全的

  • sb 左边作为传参 可能会有共享的情况发生 ,所以线程不安全给在这里插入图片描述

2.2 栈内存溢出

  • 栈帧过多导致栈内存溢出(一般情况 )
  • 栈帧过大导致栈内存溢出

P14 https://www.bilibili.com/video/BV1yE411Z7AP/?p=14&spm_id_from=pageDriver&vd_source=bd84b89816165ae4cd7858db2371f153

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值