JVM学习笔记一(线程私有的内存区域)

Jvm运行时,内存区域可以划分为两大部分

1.线程私有(程序计数器,虚拟机栈,本地方法栈)

2.线程共享(堆与方法区)

程序计数器:因为cpu会划分为时间片给多个线程执行,所以需要程序计数器记录下指令执行到具体的位置,当下次线程切换时,从记录的位置继续执行,同时它也是唯一不会发生OOM错误的。

本地方法栈与虚拟机栈在某些jvm虚拟机中合并成一个栈,有些是分开成两个。

虚拟机栈在线程运行时,每执行一个方法,都会对应生成一个栈帧,放入栈中。每个时刻正在运行的方法是虚拟机栈顶部的栈帧,方法的执行就是一个出栈与入栈的操作。虚拟机栈的大小默认为1M,可以使用参数-Xss来进行调整它的大小,比如:-Xss256K。JVM使用栈数据结构的原因是为了满足 A方法调用B方法,B方法调用C方法这种情况设计的。

栈帧中的局部变量表,主要存储的是八大java基本类型与对象的引用。

public class StackTest{

 public void sumTest(int sum1){

    sum1=sum1-100;

  }

}

上面这段代码执行时,会先局部变量表里押入一个入参sum1,然后往操作数栈放入sum1的值,再往操作数栈放入100这个值,然后从操作数栈中取出sum1与100两个数,计算完成后,改写局部变量表中sum1的值。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值