JVM内存管理之内存结构

来源:互联网 发布:大数据相关技术 编辑:程序博客网 时间:2024/05/18 00:17

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时,会被存储在不同的数据结构中,包括常量池,域,,方法数据,方法体,构造函数,包括类中的专用方法,实例初始化,接口初始化,等。

五:运行时常量池

六:本地方法栈

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 千牛账号在手机上被限制登录怎么办 违规的千牛账号被限制登录了怎么办 苹果id和锁屏密码忘记了怎么办 感应门的编程密码忘记了怎么办 交易猫买的号被找回了怎么办 uc上我的小说看不了怎么办 微信零钱忘记密码没有银行卡怎么办 九游平台冻结提不了现怎么办 计算机考试报名登录名忘记了怎么办 云顶扑克提现怎么提不出来怎么办 微信正在下载一直0kb怎么办 守望先锋运行时出现意外错误怎么办 信用卡暂停使用怎么办还能恢复吗 新刷乳胶漆墙面一碰一个坑怎么办 夏天开空调冻着了头疼打喷嚏怎么办 桑蚕丝衣服被沐浴露退了色怎么办 空间被别人知道了密码登录了怎么办 三星手机显示解析包出现问题怎么办 三星手机下载解析包出现问题怎么办 两万的流动大棚给整坏了怎么办 劲舞团抽奖领了一样的衣服怎么办 win系统ps界面字体太小怎么办 任何网页都变成监控登录界面怎么办 微信启动录音的尝试被拒绝怎么办 微信传到电脑的文件打不开怎么办 转转网账号出租时遇到防沉迷怎么办 如果买了王者号结果有防沉迷怎么办 苹果手机一直显示验证失败怎么办呢 安装包证书异常导致安装失败怎么办 qq飞车忘了几区的怎么办 5e在游戏里卡住不动怎么办 别人发的cdr文件打开太慢怎么办 qq红包充值话费未到账怎么办 qq飞车充值至尊皇冠不到账怎么办 微信支付金额超过单日限制怎么办 不小心在qq钱包中充错话费怎么办 衣服质量不好穿了几次就坏了怎么办 手机丢了找到手机店的人怎么办 在手机店买手机买贵了怎么办 王者荣耀好多没对的东西怎么办 用电脑玩游戏键盘不管用怎么办?