千锋教育-做有情怀、有良心、有品质的职业教育机构

当前位置:首页  >  IT问答库  >  Java基础知识

JVM模型的介绍一

发布:java培训 2022-03-16 09:54

JVM模型的介绍一

推荐答案

  Java培训班教程系列分享JVM模型的介绍Java内存分配:JVM定义了若干个程序执行期间使用的数据区域。这个区域里的一些数据在JVM启动的时候创建,在JVM退出的时候销毁。而其他的数据依赖于每一个线程,在线程创建时创建,在线程退出时销毁。

  Java按照内存使用区域可以分为四个部分:堆、栈、方法区和程序计数器;其中栈又可以分为两大部分:Java虚拟机栈和本地方法栈;下面我将通过自己的学习与别人总结的参考见解来介绍下jvm

图片1

图片1

  程序计数器

  程序计数器是一块较小的内存空间,它被用来记录当前指令执行程序的位置,在内部通过改变计数器的位置来确定下一条指令执行程序的位置;

  我们知道Java多线程的实质是通过线程轮流切换并分配处理执行事件来实现的,而在任何一个确定的时刻,一个处理器只会执行一个线程中的一条指令。为了能让线程切换后仍然能恢复到原来的位置,每个线程都需要有一个独立的程序计数器,他们之间互不影响,所以,程序计数器是线程私有的内存区域

  如果一个线程正在执行一个Java方法,那么程序计数器记录的就是正在执行的虚拟机字节码指令的地址;如果正在执行一个native方法,那么程序计数器的值就为空;

  程序计数器是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域,在四个区域中只有它不会出现内存溢出的情况

  栈之Java虚拟机栈

  Java虚拟机栈描述的是Java方法的内存模型;每个方法在被执行的同时都会创建一个Java虚拟机栈(栈帧),用于存储局部变量表、操作栈、动态链接和方法出口等信息,因此Java虚拟机栈也是线程私有的;

  类似于动画是由一栈一栈的栈帧切换产生的,程序的执行也是由栈帧的切换产生的,只是这些栈帧中存放的是方法的局部变量、操作栈、动态链接和方法出口等信息;每一个方法被调用直至执行完成的过程,就是一个栈帧在虚拟机栈中从入栈到出栈的过程;

  对于执行引擎来说,只有栈顶的栈帧是有效的,称为当前栈帧,这个栈帧关联的方法称为当前方法,执行引擎所有的字节码指令都值针对当前栈帧进行操作;

  通常我们所说的变量存储在栈中是不严谨的,在Java虚拟机栈中存放的是对应方法的局部变量,而且这些局部变量存放在Java虚拟机中的局部变量表中;对于保存的局部变量分类:Java中的基本数据类型变量的值存放在局部变量表,而对于引用类型变量来说,局部变量表只会存放对象的引用,真正的值存放在堆中;

  Java虚拟机是使用局部变量表来完成参数值到参数变量表的传递过程的,系统不会为局部变量赋予初始值(对于实例变量和类变量都会赋予初始值)

  在Java虚拟机规范中,对Java虚拟机栈规定了两种异常情况:如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError 异常;如果虚拟机栈动态扩展时无法申请到足够的内存时,会抛出OutOfMemoryError 异常

  以上就是小编介绍的"Java培训班分享的内容,希望对大家有帮助,如有疑问还可以点击进入Java视频教程进行学习。

  Java培训班http://Java.qfedu.com/

更多问题在线答疑

专业导师线上坐镇
解答个性化学习难题

点击提交问题
问答排行榜

01 网络安全发展前景怎么样

网络安全培训 网络安全培训班 网络安全培训机构
6020 人关注

02 大数据培训机构哪些比较好

大数据培训 大数据培训班 大数据培训机构
5389 人关注

03 大数据培训分享:大数据分析的数据类型都有哪些

大数据培训 大数据培训班 大数据培训机构
5062 人关注

04 网络安全培训分享:加密软件该如何进行安全防护?

网络安全培训 网络安全培训班 网络安全培训机构
4733 人关注

05 大数据之Spark框架中RDD和DataFrame的区别

大数据培训 大数据培训班 大数据培训机构
4561 人关注

06 如何进入大数据行业?相关学习路线是什么

大数据培训 大数据培训班 大数据培训机构
4238 人关注

相关问题

Java培训班的课程一般都学习什么内容

首先是Java技术的核心和基础JavaSE,这一阶段会接触到Java基础语...

学习Java有哪些技巧吗

java作为最经典的编程语言之一受到大家的喜爱,不止你我,很多人...

java程序员常用到的技术有哪些

操作系统、计算机网络这些基础知识,工作之后基本都忘的差不多了...

int和integer有哪些区别?

int 和 Integer 的基本区别有如下⼏点: int 是基本数据类型,...

JVM模型的介绍二

JVM模型的介绍二,接着上一篇我们继续来分享,栈之本地方法栈。 ...

JVM模型的介绍一

Java培训班教程系列分享JVM模型的介绍一,Java内存分配:JVM定义...

IT趣味问答挑战赛

测一测
你知道多少IT梗