JAVA虚拟机JVM介绍PPT课件.ppt_第1页
JAVA虚拟机JVM介绍PPT课件.ppt_第2页
JAVA虚拟机JVM介绍PPT课件.ppt_第3页
JAVA虚拟机JVM介绍PPT课件.ppt_第4页
JAVA虚拟机JVM介绍PPT课件.ppt_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

汇报人:陈琦帆,JVM,汇报人:陈琦帆,JVM简介目录,Java虚拟机和Java内存区域概述Java虚拟机栈和本地方法栈Java堆方法区和运行时常量池,Java虚拟机和Java内存区域概述,什么是虚拟机,什么是Java虚拟机Java虚拟机基础架构Java虚拟机运行时数据区程序计数器区域,Java虚拟机和Java内存区域概述什么是虚拟机,什么是Java虚拟机,虚拟机定义:模拟某种计算机体系结构,执行特定指令集的软件系统虚拟机(VirtualBox、VMware),进程虚拟机进程虚拟机JVM、AdobeFlashPlayer、FC模拟器高级语言虚拟机JVM、.NETCLR、P-Code,Java虚拟机和Java内存区域概述什么是虚拟机,什么是Java虚拟机,Java语言虚拟机可以执行Java语言的高级语言虚拟机。Java语言虚拟机并不一定就可以称为JVM,譬如:ApacheHarmonyJava虚拟机必须通过JavaTCK(TechnologyCompatibilityKit)的兼容性测试的Java语言虚拟机才能称为“Java虚拟机”Java虚拟机并非一定要执行“Java”程序业界三大商用JVM:OracleHotSpot、OracleJRockitVM、IBMJ9VM,Java虚拟机和Java内存区域概述JAVA虚拟机架构,该图参考了网上广为流传的JVM构成图,大家看这个图,整个JVM分为四部分:ClassLoader类加载器ExecutionEngine执行引擎NativeInterface本地接口Runtimedataarea运行数据区,Java虚拟机和Java内存区域概述什么是虚拟机,什么是Java虚拟机,OracleHotSpot虚拟机最初由名为“LongviewTechnologies”的小公司开发,后被Sun公司收购。最初并非面向Java语言开发,而是面向Strongtalk语言。HotSpot命名来自它的“热点代码探测”技术。从JDK1.2开始加入Sun(Oracle)JDK,在JDK1.3开始成为Sun(Oracle)JDK的默认实现,在1.4中成为唯一的虚拟机。在2006年底开始开源,由此建立的OpenJDK项目。本系列课程中所有的虚拟机实现,所指的都是OracleHotSpot虚拟机。,Java虚拟机和内存区域概述Java虚拟机运行时数据区,Java虚拟机运行时数据区在Java虚拟机规范中定义了若干种程序运行期间会使用到的存储不同类型数据的区域。有一些区域是全局共享的,随着虚拟机启动而创建,随着虚拟机退出而销毁。有一些区域是线程私有的,随着线程开始和结束而创建和销毁。是所有Java虚拟机共同的内存区域概念模型,Java虚拟机和内存区域概述Java虚拟机运行时数据区,运行时数据区的划分程序计数器Java堆Java虚拟机栈本地方法栈方法区,Java虚拟机和内存区域概述程序计数器区域,程序计数器(ProgramCounterRegister)一块较小的的内存空间,它的作用可以看作是当前线程所执行的字节码的行号指示器。如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是Native方法,这个计数器值则为空。此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域。,JVM自动内存管理:内存区域基础概念,Java虚拟机栈和本地方法栈,Java虚拟机栈和本地方法栈,Java虚拟机栈的概念和特征本地方法栈的概念和特征栈帧概念和特征本地变量表和操作数栈实战内存异常实战,Java虚拟机栈和本地方法栈Java虚拟机栈的概念和特征,Java虚拟机栈的特征线程私有后进先出(LIFO)栈存储栈帧,支撑Java方法的调用、执行和退出可能出现OutOfMemoryError异常和StackOverflowError异常,Java虚拟机栈和本地方法栈本地方法栈的概念和特征,Java本地方法栈的特征线程私有后进先出(LIFO)栈作用是支撑Native方法的调用、执行和退出可能出现OutOfMemoryError异常和StackOverflowError异常有一些虚拟机(如HotSpot)将Java虚拟机栈和本地方法栈合并实现,Java虚拟机和内存区域概述栈帧概念和特征,栈帧的概念和特征Java虚拟机栈中存储的内容,它被用于存储数据和部分过程结果的数据结构,同时也被用来处理动态链接、方法返回值和异常分派一个完整的栈帧包含:局部变量表、操作数栈、动态连接信息、方法正常完成和异常完成信息,Java虚拟机和内存区域概述栈帧概念和特征,局部变量表概念和特征由若干个Slot组成,长度由编译期决定单个Slot可以存储一个类型为boolean、byte、char、short、float、reference和returnAddress的数据,两个Slot可以存储一个类型为long或double的数据。局部变量表用于方法间参数传递,以及方法执行过程中存储基础数据类型的值和对象的引用,Java虚拟机和内存区域概述栈帧概念和特征,操作数栈的概念和特征是一个后进先出栈,由若干个Entry组成,长度由编译期决定单个Entry即可以存储一个Java虚拟机中定义的任意数据类型的值,包括long和double类型,但是存储long和double类型的Entry深度为2,其他类型的深度为1在方法执行过程中,栈帧用于存储计算参数和计算结果;在方法调用时,操作数栈也用来准备调用方法的参数以及接收方法返回结果,Java虚拟机栈和本地方法栈栈帧实战,通过一个具体例子来演示栈帧的局部变量表和操作数栈的工作方式,Java虚拟机栈和本地方法栈内存异常实战,Java虚拟机栈和本地方法栈可能发生如下异常情况:如果线程请求分配的栈容量超过Java虚拟机栈允许的最大容量时,Java虚拟机将会抛出一个StackOverflowError异常。如果Java虚拟机栈可以动态扩展,并且扩展的动作已经尝试过,但是目前无法申请到足够的内存去完成扩展,或者在建立新的线程时没有足够的内存去创建对应的虚拟机栈,那Java虚拟机将会抛出一个OutOfMemoryError异常。,Java虚拟机栈和本地方法栈内存异常实战,虚拟机栈栈溢出的实例演示,JVM自动内存管理:内存区域基础概念,Java堆,Java堆,Java堆的概念栈与堆Java堆内存异常实战,Java堆Java堆的概念,Java堆的特征全局共享通常是Java虚拟机中最大的一块内存区域作用是做为Java对象的主要存储区域JVMS明确要求该区域需要实现自动内存管理,即常说的GC,但并不限制采用哪种算法和技术去实现可能出现OutOfMemoryError异常,Java堆栈与堆,从栈到堆的关联过程:,Objectobj=newObject(),Java堆Java堆内存异常实战,Java堆可能发生如下异常情况:如果实际所需的堆超过了自动内存管理系统能提供的最大容量,那Java虚拟机将会抛出一个OutOfMemoryError异常。,JVM自动内存管理:内存区域基础概念,方法区和运行时常量池,方法区和运行时常量池,方法区的概念运行时常量池的概念HotSpot方法区实现的变迁方法区内存异常实战,方法区和运行时常量池方法区的概念,方法区的特征全局共享作用是存储Java类的结构信息JVMS不要求该区域实现自动内存管理,但是商用Java虚拟机都能够自动管理该区域的内存可能出现OutOfMemoryError异常,方法区和运行时常量池运行时常量池的概念,运行时常量池的特征全局共享是方法区的一部分作用是存储Java类文件常量池中的符号信息可能出现OutOfMemoryE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论