`
漫漫编程路
  • 浏览: 4376 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jvm虚拟机-栈

    博客分类:
  • JVM
 
阅读更多

java 每当启用一个线程时,JVM就为他分配一个Java栈。这个栈是线程私有的,其生命周期与线程一样。其他的线程是不可能访问到这个线程栈上的数据,所以栈里的数据是不存在同步问题的

Java栈是以栈帧为单位来保存其运行状态的,当线程在执行某个方法时,就会创建一个栈帧并压入栈中。

栈帧包括局部变量表,操作数栈,动态链接,返回值等信息。

局部变量表:是在编译期间就完成的分配,所以一个方法需要在栈帧中分配多大的局部变量空间是确定的,在运行期间这个空间大小是不会改变的。它存放了编译器可知的各种基本数据类型,以及对象的引用指针和returnAddress(指向一条字节码指令的地址),除了long,double需要占用两个slot(局部变量空间)其余只占用一个,举例

      public static int runClassMethod(int i,long l,float f,double d,Object o,byte b) {     

        return 0;     

      }     

         

    public int runInstanceMethod(char c,double d,short s,boolean b) {     

        return 0;     

      }

 

runInstanceMethod的局部变量区第一项是个reference(引用),它指定的就是对象本身的引用,也就是我们常用的this,但是在runClassMethod方法中,没这个引用,那是因为runClassMethod是个静态方法

 

操作数栈:一个临时数据区。比如在A方法中调用B方法,在调用B方法时会创建一个栈帧压入该线程的栈顶,执行完B方法后,该栈帧出栈。将B的返回结果值存入操作数栈中,供A继续执行。

 

动态链接:是指对调用方法的引用,以操作数栈的例子来说,动态链接就是A对B的引用

 

返回值:方法的返回分为正常结束和异常终止。如果是通过return正常结束,则当前栈帧从Java栈中弹出,恢复发起调用的方法的栈。如果方法又返回值,JVM会把返回值压入到发起调用方法的操作数栈。如果是异常终止,栈帧调用此方法异常引用表(栈帧中保存着一个对此方法异常引用表的引用)。当异常抛出时,JVM给catch块中的代码。如果没发现,方法立即终止,然后发起调用方法的上下文抛出异常。

 

分享到:
评论

相关推荐

    揭秘Java虚拟机-JVM设计原理与实现

    7. **多线程**:JVM内置对多线程的支持,每个线程有自己的程序计数器、本地方法栈和虚拟机栈,共享堆和方法区。 8. **类文件结构**:深入理解`.class`文件的结构,包括魔数、版本号、常量池、字段表、方法表、属性...

    深入虚拟机---JVM调优总结(摘自网上网上大牛分享).pdf

    在深入讨论JVM(Java虚拟机)调优之前,我们有必要先了解一下虚拟机的基本概念和堆栈的区分。Java程序在运行时,所有的数据都存储在JVM的内存模型中。在内存模型中,有两大重要区域,即堆(Heap)和栈(Stack)。堆主要...

    JVM基础-超清文字版.pdf

    **Java虚拟机(JVM)基础** Java虚拟机(JVM)是Java平台的核心组成部分,它是Java程序运行的引擎。JVM负责解析字节码,执行类文件,并为应用程序提供了一个跨平台的运行环境。本资料《JVM基础-超清文字版.pdf》将...

    深入理解jvm虚拟机

    标题提到的“深入理解JVM虚拟机”,意味着要对JVM的内部机制进行深入的研究和理解。其核心知识点涵盖了如下几个方面: 1. JVM架构组成:JVM主要由类加载器(Class Loader)、运行时数据区(Runtime Data Area)、...

    JVM虚拟机深度讲解

    《JVM虚拟机深度讲解》这本书是JAVA开发者深入理解JVM的重要参考资料,它全面而详尽地探讨了Java虚拟机的工作原理与优化技巧。通过阅读本书,开发者可以大幅提升对JVM的理解,从而在编程实践中更好地驾驭这个强大的...

    Java虚拟机-jvm故障诊断与性能优化-源码

    Java虚拟机(JVM)是Java程序运行的核心,它负责解释和执行字节码,为开发者提供了跨平台的运行环境。在《实战Java虚拟机——JVM故障诊断与性能优化》一书中,作者深入探讨了如何对JVM进行故障排查和性能调优,通过...

    JVM图解-JVM指令-JVM原型图.rar

    - **虚拟机栈**:每个线程都有一个独立的虚拟机栈,用于存放方法调用时的局部变量表、操作数栈和方法出口等信息。 - **本地方法栈**:为Java Native Interface(JNI)调用的C/C++方法服务。 - **程序计数器**:...

    java-jvm虚拟机原理.ppt

    Java虚拟机(JVM)是Java程序运行的核心组件,它为Java代码提供了平台无关的运行环境。本篇文章将深入探讨JVM的生命周期、体系结构、类加载机制、内存区域以及垃圾收集。 首先,JVM的生命周期与Java程序紧密关联。...

    详解java中jvm虚拟机栈的作用

    详解 Java 中 JVM 虚拟机栈的作用 JVM 虚拟机栈是 Java 虚拟机(JVM)中的一部分,负责管理 Java 程序的执行。虚拟机栈由一个个栈帧组成,每个栈帧包含局部变量表、操作数栈、动态连接和方法出口四部分。 局部变量...

    Java语言规范和JVM虚拟机规范.zip

    Java语言规范和JVM虚拟机规范是理解Java编程基础及其执行机制的核心文档,它们由Oracle官方发布,确保了Java开发的准确性和一致性。本压缩包包含的文件详细阐述了Java编程语言的各个方面以及Java虚拟机(JVM)的工作...

    JVM中[虚拟机栈]的所有内容-pdf

    Java虚拟机栈(JVM Stack)是Java虚拟机内存模型中的一个重要组成部分,它与程序的执行密切相关。每个线程在启动时都会创建一个独立的虚拟机栈,用于存储每个线程在执行过程中产生的栈帧(Stack Frame)。栈帧是...

    理解虚拟机--有笔记版

    JVM内存模型定义了程序中各种变量的访问规则,它包含了堆(Heap)、栈(Stack)、方法区(Method Area)、程序计数器(Program Counter)和本地方法栈(Native Method Stack)五个主要区域。每个区域都有其特定的...

    深入理解JVM-java虚拟机栈.docx

    Java虚拟机栈(JVM Stack)是Java虚拟机的核心组件之一,它负责管理方法执行时的内存模型。栈是线程私有的,每个线程在启动时都会创建一个虚拟机栈,栈的生命周期与线程同步,即随线程创建而创建,随线程结束而销毁...

    JVM内存结构-JVM体系结构 程序计数器 虚拟机栈 本地方法栈 堆 方法区

    JVM内存结构-JVM体系结构 程序计数器 虚拟机栈 本地方法栈 堆 方法区

    理解JVM虚拟机原理(学习资料).docx

    - **栈(Stack)**:每个线程都有自己的程序计数器、虚拟机栈和本地方法栈。栈帧用于存储局部变量表、操作数栈、动态链接和方法出口信息。 - **本地方法栈(Native Method Stack)**:为JVM执行native方法服务。 -...

    JVM详解-淘宝内部资料

    堆内存是所有对象实例的存储区域,方法区存储类信息,虚拟机栈保存每个线程的局部变量和方法调用,本地方法栈用于支持JNI调用,程序计数器记录下一条要执行的指令地址。 3. **执行引擎(Execution Engine)**:负责...

    JVM虚拟机了解

    2. 虚拟机栈:每个线程都有自己的虚拟机栈,用于存储局部变量表、操作数栈和方法调用状态。局部变量表保存编译期已知的基本类型、对象引用和returnAddress。 3. 本地方法栈:与虚拟机栈类似,但专用于支持native...

    练习JVM调优-jvm_demo.zip

    - 运行数据区:包括堆、方法区、虚拟机栈、本地方法栈和程序计数器。 - 堆内存:存储对象实例,分为新生代和老年代。 - 方法区:存储类信息、常量、静态变量等元数据。 - 栈内存:每个线程都有一个独立的虚拟机...

    JVM虚拟机面试题汇总

    ### JVM虚拟机面试题知识点详解 #### 一、JVM运行时内存结构 JVM运行时数据区(Runtime Data Area)主要包括以下几部分: 1. **程序计数器(Program Counter Register)**:是一块较小的内存空间,当前线程所执行的...

    JVM规范--高手总结

    按照JVM规范,内存主要分为五个区域:程序计数器、Java虚拟机栈、本地方法栈、堆和方法区(在Java 8之后被元空间取代)。每个区域都有其特定的用途和生命周期管理: 1. **Java虚拟机栈**:每个线程都有一个独立的...

Global site tag (gtag.js) - Google Analytics