JVM内存管理之内存结构

JVM在运行java程序时,将他们划分成几种不同格式的数据,分别存储在不同的区域,这些数据统一称为运行时数据。主要分为以下6种存储结构。

1、PC寄存器数据;
2、Java栈;
3、堆;
4、方法区;
5、本地方法区;
6、运行时常量;

一:PC寄存器

pc寄存器用于保存当前正常执行的程序的内存地址。
java程序是多线程执行的,当对个线程交叉执行时,被中断线程的程序当前执行到那条地址的内存地址必然要保存下来,以便于他被恢复时再按照中断时的指令地址继续执行下去

二:Java栈

java栈是和线程关联在一起的,每创建一个java线程,JVM就会为这个线程创建一个对应的栈,在java栈中会有多个栈,栈针是和方法关联起来的。栈针中会包含一些内部变量,操作栈和方法返回值等信息。
java栈的栈顶的栈针是当前正在执行的活动栈,也就是当前正在执行的方法,PC寄存器会指向这个地址。当这个栈针中调用另一个方法是,这个栈针将被压栈新的栈针将被放到栈的顶部,变为活动栈,当这个栈中的指令执行完成时,这个栈针将被弹出,下一个栈针将变为活动栈,上一个栈针的返回值将变为这个栈的变量使用。

三:堆

堆是存储java对象的地方,它是JVM管理Java对象的核心存储区域。堆是被所有java线程共享的,所以对他的访问需要注意同步问题,方法和对应的属性都需要保证一致性。

四:方法区

JVM方法区是用于存储类结构信息的地方,当类被加载到JVM时,会被存储在不同的数据结构中,包括常量池,域,,方法数据,方法体,构造函数,包括类中的专用方法,实例初始化,接口初始化,等。

五:运行时常量池

六:本地方法栈

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值