当前位置: 首页 > 编程笔记 >

Java虚拟机JVM堆栈区

沈骞仕
2023-03-14
本文向大家介绍Java虚拟机JVM堆栈区,包括了Java虚拟机JVM堆栈区的使用技巧和注意事项,需要的朋友参考一下


以下是了解JVM堆栈区域的一些关键点-

  • 在创建线程期间,Java虚拟机将创建一个单独的堆栈。

  • JVM在此堆栈上仅执行两个操作。操作是推入(即插入)和弹出(即删除)。

  • 当前正在执行线程时,与其关联的堆栈称为运行时堆栈。

  • 线程完成的每个方法调用,中间计算,局部变量的分配,调用参数等都作为操作存储在运行时堆栈中。

  • 线程停止或完成执行后,将删除堆栈中的各个部分。

  • 一旦线程完成所有调用,堆栈将变为空并被删除。

  • 在终止线程之前,JVM破坏了与该线程关联的堆栈。

  • 存储与线程关联的数据的堆栈专用于该特定线程,而其他线程则不可访问。

  • 这表明堆栈中的数据是线程安全的。

  • 与线程关联的堆栈中的每个数据都称为激活记录或堆栈帧。

注意 -JVM堆栈具有连续的内存位置不是强制性的。

激活记录/堆栈框架的结构

它由三个组成部分组成-

    list-paddingleft-2">
  • 局部变量数组,

  • 操作数堆栈,以及帧数据

  • JVM通过检查类数据来创建所需大小的堆栈框架。

  • 操作数堆栈的功能类似于JVM的工作区—它用于存储中间计算结果。它的结构类似于本地变量数组,但可以通过在堆栈上执行push和pop操作来访问。

  • 帧数据-它包含常量数据值和方法返回的数据。除此之外,它还包含对Exception表的引用,该表具有有关在需要捕获异常并且需要在控制台上显示相关消息时有关catch块的所有信息。


 类似资料:
  • 本文向大家介绍Java JVM虚拟机运行机制,包括了Java JVM虚拟机运行机制的使用技巧和注意事项,需要的朋友参考一下 一:JVM基础概念          JVM(Java虚拟机)一种用于计算设备的规范,可用不同的方式(软件或硬件)加以实现。编译虚拟机的指令集与编译微处理器的指令集非常类似。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。       

  • 虽然AST可以直接解释执行,实现也不复杂,但大部分语言,比如java,python,ruby(1.9版本之后)使用虚拟机解释字节码执行。字节码和AST的执行有很强的一致性,但字节码执行机制可以实现一些更细粒度的控制 这里的虚拟机是指执行一种低级语言字节码的虚拟机,这个限定可能强了些,比方说,前面说的一个AST解释器,也可以看做是一种虚拟机,因为理论上是可以有一个机器解释AST执行,但这里我们说的虚

  • 我在WebSphere管理控制台中:Application servers>as-name>Process definition>Java Virtual Machine。 有一个字段“最大堆大小”。 指定最大堆的两个选项有什么区别?

  • 问题内容: 每当加载一个类时,什么存储在堆中以及什么存储在堆栈中? 线程也驻留在哪里? 问题答案: 引用类型在堆中。 任何原始类型的数据和对堆上值(方法的参数/局部变量)的引用都在堆栈上。 每个线程都有自己的堆栈。 应用程序中的所有线程共享同一堆。

  • 我来自C/C++背景,在这里一个进程内存分为: null 我想把我的注意力集中在这一点上,当我阅读JVM中的堆和堆栈时,我们是在谈论堆栈和堆的概念吗?并且整个JVM的实际内存驻留在堆上(这里指的是堆的C++概念)?

  • 一、运行时数据区域 程序计数器 Java 虚拟机栈 本地方法栈 堆 方法区 运行时常量池 直接内存 二、垃圾收集 判断一个对象是否可被回收 引用类型 垃圾收集算法 垃圾收集器 三、内存分配与回收策略 Minor GC 和 Full GC 内存分配策略 Full GC 的触发条件 四、类加载机制 类的生命周期 类加载过程 类初始化时机 类与类加载器 类加载器分类 双亲委派模型 自定义类加载器实现 参