`
king_tt
  • 浏览: 2234443 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java虚拟机结构

 
阅读更多
一、JVM主要的结构如下:

二、各个区域功能介绍

1)、方法区(Method Area):
(1)用于存储虚拟机加载的类信息、常量、静态变量等,是各个线程共享的内存区域
(2)默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小;
(3)方法区中还有一部分是运行时常量池,主要用来存储编译时生成的字面量和符号引用,常量也可以在运行时产生,如String的intern方法;
(4)和Java堆一样不需要连续的内存和可以选择固定大小或可扩展外,还可以选择不实现垃圾收集。
2)、栈:
(1)Java虚拟机栈是线程私有的,生命周期与线程相同
(2)每个方法被执行的时候都同时创建一个栈帧(stack frame),用于存储局部变量表,操作栈,动态链接,方法出口等信息。每一个方法执行完的过程就对应栈帧在栈中进入进出的过程。栈帧由三部分组成:局部变量区、操作数栈、帧数据区。
(3)JVM虚拟机栈中的局部变量表存储了编译期可知的各种基本数据类型。局部变量表所需要的空间在编译期就分配完成。
(4)栈帧是方法运行期的基础数据结构。
3)、本地方法栈(Native Method Stack):
(1)本地方法栈为JVM虚拟机使用到的Native方法服务。

在HotSpot中并不区分虚拟机栈和本地方法栈


4)、堆(Heap):
(1)Java虚拟机所管理的内存中最大的一块。
(2)Java堆是所有线程共享的区域,在虚拟机启动时创建。
(3)内存区域的唯一目的就是存放对象实例,所有的对象实例以及数组都在堆上分配内存。
(4)Java堆是JVM垃圾回收机制主要管理的内存区域,Java堆可以处于内存上不连续的内存空间。
5)、程序计数器:
(1)一块比较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器
(2)字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令、分支,循环、跳转、异常处理、线程恢复等都需要依赖程序计数器。
6)、运行时常量池:
(1)运行时常量池是方法区的一部分。
(2)Class文件中除了有类的版本、字段、方法接口描述等信息外,还有一项信息是常量池,用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载
之后存放到方法区的运行时常量池。
7)、直接内存:
由于Java引进了NIO,引入了通道和缓冲区的IO方式,可以调用Native方法直接分配堆外内存,这个堆外内存就是本机内存,不会影响堆内存大小。

分享到:
评论

相关推荐

    java虚拟机结构图

    java虚拟机 简易结构图

    深入java虚拟机.pdf

    Java 虚拟机的体系结构由多个子系统组成,包括类加载器子系统、执行引擎、数据区等。类加载器子系统负责加载程序中的类型(类和接口),并赋予唯一的名字。执行引擎负责执行被加载类中包含的指令。数据区中保存了...

    Java虚拟机规范.Java SE 8版.zip

    第3章详述如何将Java语言编写的程序转换为Java虚拟机指令集,涉及常量、局 部变量、控制结构、算术运算、参数接收、方法调用、数组、操作数栈、异常处理、同步与注解等;第4章深入分析用来表示编译后的类和接口的...

    Java虚拟机规范SE8英文

    #### 二、Java虚拟机结构 - **类文件格式**:类文件是编译后的Java程序的主要载体,包含了字节码、常量池、字段声明、方法声明等信息。 - **数据类型**: - **基本类型**:包括整型、浮点型、返回地址类型和布尔型...

    Java虚拟机规范中文版(JavaSE7).pdf

    **虚拟机结构** Java虚拟机的结构包括内存区域、执行引擎、类加载器系统等组件。内存区域主要分为堆、栈、方法区、本地方法栈和程序计数器等部分,每个都有特定的用途,例如,堆存储对象实例,栈处理方法调用,方法...

    java虚拟机结构机制.rar

    本资料将深入探讨Java虚拟机的结构机制,包括内存区域、指令集、垃圾回收、类加载机制等关键概念。 1. **内存区域**: - **程序计数器**:存储当前线程正在执行的字节码的地址,用于控制程序的执行流程。 - **...

    Java虚拟机特性JAVA SE 7.pdf-中文完整书签文字版

    Java虚拟机结构** - **类文件格式**: Java编译器将源代码编译成字节码,存储在`.class`文件中,该格式定义了如何组织和存储类和接口的信息。 - **数据类型**: 包括原始类型(如整型、浮点型、布尔型)和引用类型(如...

    Java虚拟机规范 JavaSE7

    Java虚拟机(JVM)是Java程序运行的基础,它负责执行Java字节码,提供了一个与平台无关的执行环境。JVM规范定义了JVM的结构、指令集和运行时数据区,以及如何执行指令和处理异常。自1999年以来,JVM规范经历了多次...

    java虚拟机规范(java SE7)

    java虚拟机规范,高清PDF版本,含有目录结构:第一章:引言; 第二章:java虚拟结构(运行时区域内存:寄存器,java虚拟机栈,java堆,方法去,运行时常量池,本地方法栈); 第三章:为java虚拟机编译; 第四章:...

    Java虚拟机资料.zip

    1. **Java虚拟机结构**:JVM由类加载器、运行时数据区、执行引擎、本地方法接口和本地方法库组成。每个部分都有其特定的功能,如类加载器负责加载类文件,执行引擎则负责执行字节码。 2. **类加载机制**:包括加载...

    Java虚拟机规范中文版.pdf

    Java虚拟机(JVM)是实现Java技术的关键组件,它为Java程序提供了一个运行环境。Java程序在编写后会被编译成一种称为字节码的中间表示形式,这种字节码可以跨平台运行,因为JVM负责将字节码转换成机器代码。JVM的...

    Java虚拟机(Java VM) msjavax86 微软java虚拟机

    Java虚拟机的内部结构包括类装载器、运行时数据区、执行引擎、本地方法接口和本地库。其中,类装载器负责加载类文件,运行时数据区存储线程的工作数据,执行引擎解析并执行字节码,本地方法接口允许JVM调用非Java...

    Java虚拟机规范(中文版).pdf

    ### Java虚拟机规范(JVM)概览 #### 核心概念与重要性 《Java虚拟机规范(JavaSE7版)》是理解Java虚拟机(JVM)运作机制的基石,由Tim Lindholm、Frank Yellin、Gilad Bracha和Alex Buckley等人撰写,后由周志明、...

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

     本书共分20章,第1-4章解释了java虚拟机的体系结构,包括java栈、堆、方法区、执行引擎等;第5-20章深入描述了java技术的内部细节,包括垃圾收集、java安全模型、java的连接模型和动态扩展机制、class文件、运算及...

    Java虚拟机规范(Java SE 7)

    2. **Java虚拟机结构** - **Class文件格式**:介绍了Class文件的结构与组成部分。 - **数据类型**:包括原始类型与引用类型的数据定义。 - **运行时数据区**:阐述了PC寄存器、Java虚拟机栈、Java堆、方法区、...

    Java虚拟机规范.Java SE 8版

    第3章详述如何将Java语言编写的程序转换为Java虚拟机指令集,涉及常量、局部变量、控制结构、算术运算、参数接收、方法调用、数组、操作数栈、异常处理、同步与注解等;第4章深入分析用来表示编译后的类和接口的...

    java虚拟机

    Java虚拟机(JVM,Java Virtual Machine)是Java平台的核心组成部分,它负责执行Java程序,为Java代码提供了跨平台的运行环境。Java虚拟机的概念始于Sun Microsystems,现在由Oracle公司继续发展和维护。JVM的设计...

Global site tag (gtag.js) - Google Analytics