码迷,mamicode.com
首页 > 其他好文 > 详细

JVM运行时数据区与JVM堆内存模型小结

时间:2017-08-24 22:37:38      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:模型   控制器   返回值   局部变量   静态   ack   很多   对象   meta   

前提

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


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

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


来看看它们都是干嘛的

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

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

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

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

:各种对象所在。


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

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


再来看看JVM堆内存模型

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






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


待续。

JVM运行时数据区与JVM堆内存模型小结

标签:模型   控制器   返回值   局部变量   静态   ack   很多   对象   meta   

原文地址:http://www.cnblogs.com/larryzeal/p/7425282.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!