028-86922220

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

jvm内存结构的原理及应用

这篇文章主要讲解了“jvm内存结构的原理及应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jvm内存结构的原理及应用”吧!

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、成都网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的尼玛网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

jvm内存结构概述

jvm内存结构的原理及应用
  jvm内存结构主要包括:方法区、堆、虚拟机栈、本地方法栈、程序计数器等五大部分, 下面我们来具体看一下每一个部分。

1.1 虚拟机栈

  以methodA调用methodB为例,来看一下方法栈的执行过程 jvm内存结构的原理及应用
首先是主方法进入空栈(图中免去了这一步),主方法中调用methodA --》 methodA入栈 --》 methodA调用methodB --》 methodB入栈 --》 methodB执行完毕,出栈并返回返回值 --》 methodA执行完毕,出栈并返回返回值 --》主线程执行完毕并出栈(图中免去了这一步)--》程序执行完毕。
  那么methodA、methodB中到底包含了哪些内容呢?
  我们不如从方法定义的角度来思考一下,编写程序时,里面经常出现的几个要素无外乎:变量、控制结构(循环、分支)、函数调用(也可以叫方法),函数其实就是用一定的控制结构来操作变量,中间穿插着其他函数的调用,分支结构主要控制的是程序执行到哪一行,这个由我们后面1.5章节要讲到的程序计数器来实现,函数调用层次如上面所说由虚拟机栈来支持,而变量以及方法的出口就是methodA、methodB中的主要内容。
  methodA、methodB在虚拟机栈中叫做栈帧,栈帧中包括变量(局部变量表-基本类型、对象引用-对象内存地址等)以及返回值地址等信息,可以看出栈帧中包含的内容是编译器就可确定大小的,当进入一个方法时,需要分配多大的局部变量空间是完全确定的,在运行期中不会改变局部变量表的大小。

1.2 本地方法栈

1.3 堆

1.4 方法区

1.5 程序计数器

1.6 线程共享区与线程独占区

  上面五个区域中,方法区和堆是线程共享的区域,这两个区域中放置的内容是与线程无关的,任意一个线程都可能会访问到这两块区域中的内容。
  对于每个线程来说,它的调用方法栈应该是独属于某个线程的,如果多个线程共用一个方法栈那程序的执行顺序是无法得到保障的,线程执行到哪一行应该也是唯一的,因此方法栈、程序计数器是线程独占的。

感谢各位的阅读,以上就是“jvm内存结构的原理及应用”的内容了,经过本文的学习后,相信大家对jvm内存结构的原理及应用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


分享文章:jvm内存结构的原理及应用
网址分享:http://www.tsicrk.com/article/igogjo.html

其他资讯

让你的专属顾问为你服务

0.6382s