当前位置:  首页 热点 详情

虚拟机栈为虚拟机执行Java方法,栈是JVM运行时的单位

发布来源:互联网    发布时间:2020-09-25 11:43

一、内存与线程

1、内存结构

内存是计算机的重要部件之一,它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平。JVM的内存结构规定Java程序在执行时内存的申请、划分、使用、回收的策略,通说来说JVM的内存指运行时数据区这一大块的。

虚拟机栈为虚拟机执行Java方法,栈是JVM运行时的单位(图1)

2、线程运行

JVM中一个应用是可以有多个线程并行执行,线程被一对一映射为服务所在操作线程,调度在可用的CPU上执行,启动时会创建一个操作线程;当该线程终止时,这个操作线程也会被回收。

虚拟机栈为虚拟机执行Java方法,栈是JVM运行时的单位(图2)

在虚拟机启动运行时,会创建多个线程,数据区中有的模块是线程共享的,有的是线程私有的:

虚拟机栈为虚拟机执行Java方法,栈是JVM运行时的单位(图3)

线程共享:元数据区、堆Heap。

线程私有:虚拟机栈、本地方法栈、程序计数器。

单个CPU在特定时刻只能执行一个线程,所以多线程通过几块空间的使用,不断的争抢CPU的执行时间段。

二、元数据空间

基本描述

方法元空间(方法区)在JVM启动的时候被创建,是被各个线程共享的内存空间,用于存放类和方法的元数据以及常量池,比如Class和Method。

在实际的中,经常因为加载的类太多,进而导致内存溢出问题,这样可以对元空间的大小进行扩展。

与堆的关系

虚拟机栈为虚拟机执行Java方法,栈是JVM运行时的单位(图4)

元空间存放加载的类信息,当类被实例化时,堆中存储实例化的对象信息,并且通过对象类型数据的指针找到类。

三、堆空间

基本描述

JVM启动时创建堆区,是内存的核心区,通常情况下也是最大的内存空间,是被所有线程共享的,几乎所有的对象实例都要在堆中分配内存,所以这里也是垃圾回收的重点空间。

堆栈关系

虚拟机栈为虚拟机执行Java方法,栈是JVM运行时的单位(图5)

栈是JVM运行时的单位,堆是存储单位,当栈中方法结束,相关对象失去所有引用后,不会马上被移除堆空间,要等到垃圾收集器运行的时候。

四、虚拟机栈

虚拟机栈(Java栈)在每个线程创建时都会生成一个虚拟机栈,栈的内部是一个个栈帧单元,对应Java方法的调用,其生命周期和线程周期保持一致。用来存储方法的局部遍历,部分执行结果,方法的调用和返回。

虚拟机栈为虚拟机执行Java方法,栈是JVM运行时的单位(图6)

栈帧是方法执行的数据集,维持执行过程中的各种数据信息,执行的方法依次入栈,栈顶存放当前要执行的方法,执行结束后出栈,对于栈没有垃圾回收问题。

五、程序计数器

基本描述

虚拟机栈为虚拟机执行Java方法,栈是JVM运行时的单位(图7)

前后关系

线程在获取CPU的时间段内执行代码,但是线程随时可能没有执行完就被挂起,等到线程A再次获取CPU执行时,CPU 得知道执行到线程A的哪一个指令,程序计数器会存储该动作。

六、本地方法栈

本地方法栈与虚拟机栈所起到的作用是类似的,虚拟机栈为虚拟机执行Java方法,本地方法栈虚拟机使用到的 本地方法,在虚拟机规范中对本地方法栈中方法使用的语言、使用方式与数据结构并没有强制规定,因此具体的虚拟机可以自由实现它。HotSpot虚拟机直接就把本地方法栈和虚拟机栈合二为一。

本文相关词条概念解析:

线程

线程,计算机科学术语,有时也被称为轻量级进程(Light Weight Process,LWP),它是运行中的程序的调度单位。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。线程被包含在进程之中,是进程的一个实体,是CPU调度和分派的基本单位它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

相关资讯

相关推荐

  • 拍美照哪有这么难,三星Galaxy,S20,5G拍摄的

    拍美照哪有这么难,三星Galaxy,S20,5G拍摄的

    如何体现自己的审美水平?除了穿搭、兴趣,其实拍照也非常考验人们对美的感知。而且想要拍出美美的照片,不仅要学会发现美的所在,还要有能呈现美的实力。当下,一款功能强大的手机自然是必不可少。早就挑花眼的用户

    10-23
  • 2020年开篇: 堆、栈、方法区、类加载器——JVM 内存模型分析

    2020年开篇: 堆、栈、方法区、类加载器——JVM 内存模型分析

    美好祝愿Java 进阶相信正经,或者不正经的程序员小伙伴们,亦或着非小伙伴,多多少少都听说过JVM(Java虚拟机)Java程序的运行支持;同时,也是高级程序员的必须掌握的底层知识,更是中高级Java

    01-03
  • 文本分类与比较等文本注释类型的服务,你会选用哪个

    文本分类与比较等文本注释类型的服务,你会选用哪个

    目前,从搜索引擎与情感分析,到虚拟助手与聊天机器人,机器学习应用场景中的许多研究领域,都需要通过文本注释工具与服务来准确性。在AI研究与行业中,发现或创建可注释的数据对于项目团队而言,是一项昂贵而艰巨

    10-23
  • 微信这个AI功能,像人脸识别,最好玩的一点就是还能转换成卡通动态图

    微信这个AI功能,像人脸识别,最好玩的一点就是还能转换成卡通动态图

    大家好!又到了小雷带大家玩机的时间啦!在如今这个科技发达的时代,AI技术可谓是越来越贴近我们的生活了,也逐渐的运用到我们的生活中,像人脸识别、人工智能,还有像我们常用的个人助理Siri 等等。小雷只想

    10-23
  • 信维通信表示,不存在被苹果踢出供应链的情况

    信维通信表示,不存在被苹果踢出供应链的情况

    10月12日,信维通信(300136.SZ)发布业绩预告称,预计2020年前三季度净利润为7.29亿元至7.59亿元,同比下降8.38%至12.00%;预计扣非净利润为6.86亿元至7.16亿元,同比

    10-23
  • 猿辅导凭什么超级吸金

    猿辅导凭什么超级吸金

    允中 发自 凹非寺技术之力,不仅在重塑教育领域,更在重构教育行业格局。猿辅导就是最新、最好的证明。或者现在该说:全球教育科技第一独角兽公司 猿辅导了。在今天(10月22日)猿辅导官宣了新一轮融资,获投

    10-23

网友评论