`
yanfei0331
  • 浏览: 4547 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

JVM Runtime Data Areas

    博客分类:
  • java
 
阅读更多

原文参考:http://blog.csdn.net/c504665913/article/details/8262127 

  • PC寄存器(PC register):每个线程启动的时候,都会创建一个PC(Program Counter ,程序计数器)寄存器。PC寄存器里保存有当前正在执行的JVM指令的地址。
  • JVM 堆栈(JVM stack):每个线程启动的时候,都会创建一个JVM堆栈。它是用来保存栈帧的。JVM只会在JVM堆栈上对栈帧进行push和pop的操作。如果出现了异常,堆栈跟踪信息的每一行都代表一个栈帧立的信息,这些信息它是通过类似于printStackTrace()这样的方法来展示的。
  • 栈帧(stack frame):
  • 每当一个方法在JVM上执行的时候,都会创建一个栈帧,并且会添加到当前线程的JVM堆栈上。当这个方法执行结束的时候,这个栈帧就会被移除。每个栈帧里都包含有当前正在执行的方法所属类的本地变量数组,操作数栈,以及运行时常量池的引用。本地变量数组的和操作数栈的大小都是在编译时确定的。因此,一个方法的栈帧的大小也是固定不变的。
  • 局部变量数组(Local variable array):
  • 这个数组的索引从0开始。索引为0的变量表示这个方法所属的类的实例。从1开始,首先存放的是传给该方法的参数,在参数后面保存的是方法的局部变量。
  • 操作数栈(Operand stack):
  • 方法实际运行的工作空间。每个方法都在操作数栈和局部变量数组之间交换数据,并且压入或者弹出其他方法返回的结果。操作数栈所需的最大空间是在编译期确定的。因此,操作数栈的大小也可以在编译期间确定。
  • 本地方法栈(Native method stack):
  • 供用非Java语言实现的本地方法的堆栈。换句话说,它是用来调用通过JNI(Java Native Interface Java本地接口)调用的C/C++代码。根据具体的语言,一个C堆栈或者C++堆栈会被创建。
  • 方法区(Method area):
  • 方法区是所有线程共享的,它是在JVM启动的时候创建的。它保存所有被JVM加载的类和接口的运行时常量池,成员变量以及方法的信息,静态变量以及方法的字节码。JVM的提供者可以通过不同的方式来实现方法区。在Oracle 的HotSpot JVM里,方法区被称为永久区或者永久代(PermGen)。是否对方法区进行垃圾回收对JVM的实现是可选的。
  • 运行时常量池(Runtime constant pool):
  • 这个区域和class文件里的constant_pool是相对应的。这个区域是包含在方法区里的,不过,对于JVM的操作而言,它是一个核心的角色。因此在JVM规范里特别提到了它的重要性。除了包含每个类和接口的常量,它也包含了所有方法和变量的引用。简而言之,当一个方法或者变量被引用时,JVM通过运行时常量区来查找方法或者变量在内存里的实际地址。
  • 堆(Heap):
  • 用来保存实例或者对象的空间,而且它是垃圾回收的主要目标。当讨论类似于JVM性能之类的问题时,它经常会被提及。JVM提供者可以决定怎么来配置堆空间,以及不对它进行垃圾回收。


  •  
  • 大小: 69 KB
分享到:
评论

相关推荐

    JVM内核架构--JVM规范

    Runtime data areas shared among all threads: Method area: holds the details of each class loaded by the class loader subsystem. Heap: holds every object being created by the threads during execution ...

    JVM演讲PPT分享

    JVM体系结构是指虚拟机的内部构造,包括类加载器(Class Loader)、运行时数据区(Runtime Data Areas)、执行引擎(Execution Engine)、本地接口(Native Interface)和垃圾回收器(Garbage Collector)等组成部分...

    100道 Jvm面试题总结及答案.docx

    Jvm 的主要组件包括:Class Loader、Runtime Data Areas、Execution Engine、Native Method Interface 等。 Class Loader 负责加载 Java 类文件,Runtime Data Areas 负责提供 Java 程序的运行时环境,Execution ...

    JVM面试题资源

    - **运行时数据区(Runtime Data Areas)**:包括程序计数器、虚拟机栈、本地方法栈、堆内存和方法区(在Java 8后被元空间取代)。 - **执行引擎(Execution Engine)**:解释字节码并执行指令。 - **垃圾收集器...

    jvm高级特性与最佳实践

    JVM主要包括类加载器(ClassLoader)、运行时数据区(Runtime Data Areas)、执行引擎(Execution Engine)等核心组件。 JVM性能瓶颈通常与内存管理、垃圾回收(GC)、线程调度等方面有关。内存管理涉及堆内存...

    jvm.zip_JVM模拟

    - **运行时数据区(Runtime Data Areas)**:包括方法区、堆、虚拟机栈、本地方法栈和程序计数器。 - **执行引擎(Execution Engine)**:解释和执行字节码指令。 - **本地方法接口(Native Method Interface)**...

    JVM基础知识部分,帮助初识JVM

    2. **运行时数据区(Runtime Data Areas)**:JVM在运行过程中会划分多个区域来存储不同类型的对象和数据,包括方法区、堆、栈、程序计数器和本地方法栈。 - **方法区**:存储类的元数据,如类名、方法信息等。在...

    JVM体系结构与GC调优

    - **运行时数据区(Runtime Data Areas)**: - **方法区(Method Area)**:存储已加载的类信息、常量、静态变量等。 - **虚拟机栈(Java Virtual Machine Stack)**:每个线程都有一个独立的栈,用于存储局部...

    JVM的机制学习手册非常不错

    2. 运行时数据区(Runtime Data Areas):包括堆、方法区、虚拟机栈、本地方法栈和程序计数器。 3. 执行引擎(Execution Engine):执行字节码并管理垃圾回收。 4. 类文件格式:定义了Java类文件的结构,包括常量池...

    Inside JVM

    JVM主要包括以下几个组件:类装载器(Class Loader)、运行时数据区(Runtime Data Areas)、执行引擎(Execution Engine)、本地方法接口(Native Method Interface)和本地库(Native Library)。每个部分都有其...

    jvm.xmind.zip

    - **运行时数据区(Runtime Data Areas)**:包括堆内存、方法区、虚拟机栈、本地方法栈和程序计数器。 - **执行引擎(Execution Engine)**:执行字节码,包括解释器和即时编译器(JIT)。 - **内存管理(Memory...

    JVM原理.doc

    3. 运行时数据区(Run-Time Data Areas),包括堆、栈、本地方法栈、方法区和程序计数器。 Java代码的编译过程由Java源码编译器完成,主要步骤包括源码解析、注解处理和生成class文件。生成的class文件包含结构信息、...

    15 - ASM之方法Frame - 简书1

    JVM Architecture由Class Loader SubSystem、Runtime Data Areas和Execution Engine三个主要部分组成。其中,Runtime Data Areas包括Method Area、Heap Area、Stack Area、PC Registers和Native Method Stack等部分...

    Java虚拟机(不错的)

    2. **运行数据区(Runtime Data Areas)**:包括程序计数器、虚拟机栈、本地方法栈、堆和方法区。每个线程都有自己的程序计数器和虚拟机栈,而堆和方法区是所有线程共享的内存区域。 3. **执行引擎(Execution ...

    Java虚拟机分析

    JVM由以下几个主要部分组成:类加载器(Class Loader)、运行时数据区(Runtime Data Areas)、执行引擎(Execution Engine)、本地接口(Native Interface)和垃圾收集器(Garbage Collector)。类加载器负责将....

    Java深度历险.pdf

    它包括类加载器(Class Loader)、运行时数据区(Runtime Data Areas)、执行引擎(Execution Engine)等多个部分。文档中提到的`jvm.dll`和`java.exe`都与JVM相关,其中`java.exe`是启动JVM的命令行工具,而`jvm....

    Java虚拟机规范(Java SE 7).7z

    2. 运行时数据区(Runtime Data Areas):包括堆、方法区、虚拟机栈、本地方法栈和程序计数器。 3. 执行引擎(Execution Engine):执行字节码,包括解释器和即时编译器(JIT)。 4. 类文件格式检查器:验证类文件的...

    Java 虚拟机原理教程

    - **运行时数据区(Runtime Data Areas)**:包括方法区、堆、虚拟机栈、本地方法栈和程序计数器。 - **执行引擎(Execution Engine)**:负责执行字节码,包括解释器和即时编译器(JIT)。 - **本地方法接口...

Global site tag (gtag.js) - Google Analytics