jvm内存分区

jvm内存分区

总体分类

堆,方法区(java8以后元空间也存放在该区域),本地方法栈,java虚拟机栈,程序计数器。
其中堆和方法区是线程共享,本地方法栈,java虚拟机栈,程序计数器是线程独享。

为什么有线程共享和独享的区别?

这需要从java程序的运行机制和各区域的储存分类来理解。一个class文件从加载到在jvm上运行,再到后来的有线程访问都需要空间去记录储存一定的信息。方法区用于存储类元信息、常量池,可以简单理解为类的方法代码,变量名,方法名,访问权限,返回值等的相关信息。用于储存class实例对象。方法栈是用于储存线程访问方法的时运行所需要的信息,包括局部变量,栈帧信息。本地方法栈于方法栈类似,不同的是执行类的navtive方法。程序计数器用于记录不同的线程的执行位置。 因存储信息类型不同决定了线程是否独享。方法栈和本地方法栈以级程序计数器存储的信息根据线程不同内容可能有所不同,所以要做到线程隔离。

堆和栈的联系

局部变量是引用类型(类、接口、数组)的时候会把对象存储到堆中,把引用(地址值)存储到栈中。这也就意味着程序在运行过程中会调整堆的占用比例。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值