收藏 分享(赏)

JAVA虚拟机JVM介绍.ppt

上传人:精品资料 文档编号:8493416 上传时间:2019-06-29 格式:PPT 页数:30 大小:305.23KB
下载 相关 举报
JAVA虚拟机JVM介绍.ppt_第1页
第1页 / 共30页
JAVA虚拟机JVM介绍.ppt_第2页
第2页 / 共30页
JAVA虚拟机JVM介绍.ppt_第3页
第3页 / 共30页
JAVA虚拟机JVM介绍.ppt_第4页
第4页 / 共30页
JAVA虚拟机JVM介绍.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、汇报人:陈琦帆,JVM,汇报人:陈琦帆,JVM 简介 目录,Java 虚拟机和 Java 内存区域概述 Java 虚拟机栈和本地方法栈 Java 堆 方法区和运行时常量池,Java 虚拟机和 Java 内存区域概述,什么是虚拟机,什么是 Java 虚拟机 Java 虚拟机基础架构 Java 虚拟机运行时数据区 程序计数器区域,Java 虚拟机和 Java 内存区域概述 什么是虚拟机,什么是 Java 虚拟机,虚拟机 定义:模拟某种计算机体系结构,执行特定指令集的软件 系统虚拟机( Virtual Box、VMware),进程虚拟机 进程虚拟机 JVM、Adobe Flash Player、FC

2、模拟器 高级语言虚拟机 JVM、.NET CLR、P-Code,Java 虚拟机和 Java 内存区域概述 什么是虚拟机,什么是 Java 虚拟机,Java 语言虚拟机 可以执行 Java 语言的高级语言虚拟机。 Java 语言虚拟机并不一定就可以称为 JVM,譬如:Apache Harmony Java 虚拟机 必须通过 Java TCK(Technology Compatibility Kit)的兼容性测试的Java语言虚拟机才能称为“Java 虚拟机” Java 虚拟机并非一定要执行“Java”程序 业界三大商用 JVM:Oracle HotSpot 、 Oracle JRockit V

3、M、IBM J9 VM,Java 虚拟机和 Java 内存区域概述 JAVA虚拟机架构,该图参考了网上广为流传的JVM构成图,大家看这个图,整个JVM分为四部分:Class Loader 类加载器 Execution Engine 执行引擎 Native Interface本地接口 Runtime data area运行数据区,Java 虚拟机和 Java 内存区域概述 什么是虚拟机,什么是 Java 虚拟机,Oracle HotSpot 虚拟机 最初由名为“Longview Technologies”的小公司开发,后被 Sun 公司收购。 最初并非面向 Java 语言开发,而是面向 Stro

4、ngtalk 语言。 HotSpot 命名来自它的“热点代码探测”技术。 从 JDK 1.2 开始加入 Sun(Oracle)JDK,在 JDK 1.3 开始成为 Sun(Oracle)JDK 的默认实现,在1.4中成为唯一的虚拟机。 在2006年底开始开源,由此建立的 OpenJDK 项目。 本系列课程中所有的虚拟机实现,所指的都是 Oracle HotSpot 虚拟机。,Java 虚拟机和内存区域概述 Java 虚拟机运行时数据区,Java 虚拟机运行时数据区 在Java 虚拟机规范中定义了若干种程序运行期间会使用到的存储不同类型数据的区域。 有一些区域是全局共享的,随着虚拟机启动而创建,

5、随着虚拟机退出而销毁。有一些区域是线程私有的,随着线程开始和结束而创建和销毁。 是所有 Java 虚拟机共同的内存区域概念模型,Java 虚拟机和内存区域概述 Java 虚拟机运行时数据区,运行时数据区的划分 程序计数器 Java 堆 Java 虚拟机栈 本地方法栈 方法区,Java 虚拟机和内存区域概述 程序计数器区域,程序计数器(Program Counter Register) 一块较小的的内存空间,它的作用可以看作是当前线程所执行的字节码的行号指示器。 如果线程正在执行的是一个 Java 方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是 Native 方法,这

6、个计数器值则为空。 此内存区域是唯一一个在 Java 虚拟机规范中没有规定任何 OutOfMemoryError情况的区域。,JVM 自动内存管理:内存区域基础概念,Java 虚拟机栈和本地方法栈,Java 虚拟机栈和本地方法栈,Java 虚拟机栈的概念和特征 本地方法栈的概念和特征 栈帧概念和特征 本地变量表和操作数栈实战 内存异常实战,Java 虚拟机栈和本地方法栈 Java 虚拟机栈的概念和特征,Java 虚拟机栈的特征 线程私有 后进先出(LIFO)栈 存储栈帧,支撑 Java 方法的调用、执行和退出 可能出现 OutOfMemoryError 异常和 StackOverflowErr

7、or 异常,Java 虚拟机栈和本地方法栈 本地方法栈的概念和特征,Java 本地方法栈的特征 线程私有 后进先出(LIFO)栈 作用是支撑 Native 方法的调用、执行和退出 可能出现 OutOfMemoryError 异常和 StackOverflowError 异常 有一些虚拟机(如 HotSpot)将 Java 虚拟机栈和本地方法栈合并实现,Java 虚拟机和内存区域概述 栈帧概念和特征,栈帧的概念和特征 Java 虚拟机栈中存储的内容,它被用于存储数据和部分过程结果的数据结构,同时也被用来处理动态链接、方法返回值和异常分派 一个完整的栈帧包含:局部变量表、操作数栈、动态连接信息、方

8、法正常完成和异常完成信息,Java 虚拟机和内存区域概述 栈帧概念和特征,局部变量表概念和特征 由若干个 Slot 组成,长度由编译期决定 单个Slot可以存储一个类型为 boolean、byte、char、short、float、reference 和 returnAddress 的数据,两个Slot可以存储一个类型为long或double的数据。 局部变量表用于方法间参数传递,以及方法执行过程中存储基础数据类型的值和对象的引用,Java 虚拟机和内存区域概述 栈帧概念和特征,操作数栈的概念和特征 是一个后进先出栈,由若干个 Entry 组成,长度由编译期决定 单个 Entry 即可以存储一

9、个 Java 虚拟机中定义的任意数据类型的值,包括 long和 double 类型,但是存储 long 和 double 类型的 Entry 深度为2,其他类型的深度为1 在方法执行过程中,栈帧用于存储计算参数和计算结果;在方法调用时,操作数栈也用来准备调用方法的参数以及接收方法返回结果,Java 虚拟机栈和本地方法栈 栈帧实战,通过一个具体例子来演示栈帧的局部变量表和操作数栈的工作方式,Java 虚拟机栈和本地方法栈 内存异常实战,Java 虚拟机栈和本地方法栈可能发生如下异常情况: 如果线程请求分配的栈容量超过 Java 虚拟机栈允许的最大容量时,Java 虚拟机将会抛出一个 StackO

10、verflowError 异常。 如果 Java 虚拟机栈可以动态扩展,并且扩展的动作已经尝试过,但是目前无法申请到足够的内存去完成扩展,或者在建立新的线程时没有足够的内存去创建对应的虚拟机栈,那 Java 虚拟机将会抛出一个 OutOfMemoryError 异常。,Java 虚拟机栈和本地方法栈 内存异常实战,虚拟机栈栈溢出的实例演示,JVM 自动内存管理:内存区域基础概念,Java 堆,Java 堆,Java 堆的概念 栈与堆 Java 堆内存异常实战,Java 堆 Java 堆的概念,Java 堆的特征 全局共享 通常是 Java 虚拟机中最大的一块内存区域 作用是做为 Java 对象

11、的主要存储区域 JVMS 明确要求该区域需要实现自动内存管理,即常说的 GC,但并不限制采用哪种算法和技术去实现 可能出现 OutOfMemoryError 异常,Java 堆 栈与堆,从栈到堆的关联过程:,Object obj = new Object(),Java 堆 Java 堆内存异常实战,Java 堆可能发生如下异常情况: 如果实际所需的堆超过了自动内存管理系统能提供的最大容量,那 Java 虚拟机将会抛出一个 OutOfMemoryError 异常。,JVM 自动内存管理:内存区域基础概念,方法区和运行时常量池,方法区和运行时常量池,方法区的概念 运行时常量池的概念 HotSpot

12、 方法区实现的变迁 方法区内存异常实战,方法区和运行时常量池 方法区的概念,方法区的特征 全局共享 作用是存储 Java 类的结构信息 JVMS 不要求该区域实现自动内存管理,但是商用 Java 虚拟机都能够自动管理该区域的内存 可能出现 OutOfMemoryError 异常,方法区和运行时常量池 运行时常量池的概念,运行时常量池的特征 全局共享 是方法区的一部分 作用是存储 Java 类文件常量池中的符号信息 可能出现 OutOfMemoryError 异常,方法区和运行时常量池 HotSpot 方法区实现的变迁,永久代与方法区 在 JDK 1.2 JDK 6,HotSpot 使用永久代实现方法区 在 JDK 7 开始,HotSpot 开始了移除永久的代计划 - 符号表被移到 Native Heap 中 - 字符串常量和类的静态引用被移到 Java Heap 中 在 JDK 8 开始,永久代已被元空间(Metaspace)所代替,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报