博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JVM运行时数据区与JVM堆内存模型小结
阅读量:5820 次
发布时间:2019-06-18

本文共 524 字,大约阅读时间需要 1 分钟。

前提

JVM运行时数据区和JVM内存模型是两回事,JVM内存模型指的是JVM堆内存模型。

那JVM运行时数据区又是什么?

它包括:程序计数器、虚拟机栈、本地方法栈、方法区、堆。

来看看它们都是干嘛的

程序计数器:保存当前线程执行的指令的地址(大意如此)。

虚拟机栈:由栈帧组成,而每个栈帧又包括局部变量表操作数栈动态连接(调用其他方法)、出口(被调用时返回值) -- 每个栈帧就代表了一个方法的执行。

本地方法栈:类似虚拟机栈,只不过方法改成了native方法。

方法区:保存了类的各种信息、类的常量、类的静态变量 -- 请注意,不包括类的普通变量!

:各种对象所在。

前三者都是线程内的资源,所以不会存在同步问题!

其实按照咕泡学院海天老师的说法是,程序计数器、虚拟机栈、本地方法栈 这三个对应了冯诺依曼结构中的运算器、控制器;而方法区、堆则对应了冯诺依曼结构中的IO和存储器。耳目一新!

再来看看JVM堆内存模型

我们常说的新生代、老年代、永久代(JDK1.8之后变成了MetaSpace),就是JVM堆内存模型!

最后,很多书上(包括教科书)都把堆(heap)叫做堆栈,而把栈(stack)叫做栈,个人觉得这是一种很扯淡的叫法。

待续。

转载地址:http://snwdx.baihongyu.com/

你可能感兴趣的文章
hdu 2444(二分图最大匹配)
查看>>
shell编程笔记六:实现ll命令
查看>>
【SAP HANA】关于SAP HANA中带层次结构的计算视图Cacultation View创建、激活状况下在系统中生成对象的研究...
查看>>
《Linux内核修炼之道》 之 高效学习Linux内核
查看>>
DevOps 前世今生 | mPaaS 线上直播 CodeHub #1 回顾
查看>>
iOS 解决UITabelView刷新闪动
查看>>
让前端小姐姐愉快地开发表单
查看>>
Web前端JQuery入门实战案例
查看>>
CentOS 7 装vim遇到的问题和解决方法
查看>>
JavaScript基础教程1-20160612
查看>>
iOS \U7ea2 乱码 转换
查看>>
FCN图像分割
查看>>
ios xmpp demo
查看>>
python matplotlib 中文显示参数设置
查看>>
数据库事务隔离级别
查看>>
【ros】Create a ROS package:package dependencies报错
查看>>
kali linux 更新问题
查看>>
HDU1576 A/B【扩展欧几里得算法】
查看>>
廖雪峰javascript教程学习记录
查看>>
WebApi系列~目录
查看>>