快速入门JVM公开课2017 11 16_第1页
快速入门JVM公开课2017 11 16_第2页
快速入门JVM公开课2017 11 16_第3页
快速入门JVM公开课2017 11 16_第4页
快速入门JVM公开课2017 11 16_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

讲师:朱阳2017.11.16,能告诉我你对快速启动JVM的理解吗?您对Java8版本8知道什么?什么是OOM?了解StackOverflowError和OutOfMemoryError、JVM的常规参数调整?您是否使用过内存快照捕获和MAT分析hprof文件?谈谈JVM对ClassLoader类加载程序的理解。JVM体系结构概述、堆体系结构概述、堆参数优化开始、概要、Contents、目录、JVM体系结构概述、PART1、JVM位置和JVM在操作系统上运行,不与硬件直接交互。负责加载类文件的类加载程序,类文件在文件开头有特定的文件标记。类加载程序只负责加载类文件,是否可以运行由ExecutionEngine决定。类加载程序2,虚拟机中包含的加载程序称为类加载程序C扩展类加载程序Java应用程序类加载程序(App)Java,也称为系统类加载程序。您可以加载当前应用的classpath中的所有类自定义加载程序Java.lang.ClassLoader的子类,自定义用户加载类的方式,class loader 3,code案例sun.misc.Launcher是Java虚拟机的门户。收到类加载请求时,特定类加载程序首先将加载任务委托给超类加载程序,然后按顺序重复,如果超类加载程序可以完成类加载任务,则该加载程序将成功返回。仅当超类加载程序无法完成此加载操作时,才直接加载。ExecutionEngine执行引擎解释命令并提交操作系统执行。NativeInterface本地接口,Java语言本身无法访问和操作基于操作系统的,但可以通过JNI接口调用其他语言来实现默认访问。本地接口用于将其他编程语言集成到Java中。集成了原始C/C程序,并且在Java首次启动C/C时使用该程序需要调用C/C程序,因此,在nativemethodstack中注册Native方法,然后在执行ExecutionEngine时加载Nativelibraries,从而在内存中特别打开区域处理名称标记为Native的代码。目前,如果企业应用程序不是与硬件相关的应用程序(例如,通过Java驱动程序打印机或Java系统管理生产设备),则使用此方法的次数越来越少。这是因为异构领域(如套接字通信和web服务)之间的通信很发达。在NativeMethodStack中注册本地方法,并在执行ExecutionEngine时加载本地方法库。NativeMethodStack、PC寄存器、每个线程都有一个程序计数器,即指向方法区域中的方法字节代码(用于存储下一个指令的地址和要执行的指令代码)的指针是执行引擎读取下一个命令的非常小的内存空间,几乎可以忽略。堆栈,也称为堆栈内存,堆栈Java程序的执行是在创建线程时创建的,其生命周期是跟踪线程的生命周期,同时释放线程结束堆栈内存。对于堆栈,没有垃圾回收问题,线程一结束,堆栈就溢出,生命周期和线程匹配,线程是私有的。基本类型的变量、实例方法和引用类型变量都分配给函数的堆栈内存。exception inthread main Java . lang . stack overflow error,方法区域,1:方法区域由线程共享,通常用于存储已装载类的元结构信息。示例:运行时常量池静态变量常量字段方法字节代码类/实例/接口初始化中使用的特殊方法等。2:通常与永久区域(Java7之前)相关联,但与特定JVM实施和发行版相关。堆体系结构概览,PART2,Heap堆(Java7之前)一个JVM实例仅存在一个堆内存,并且可以调整堆内存大小。类加载器读取类文件后,必须将类、方法和常量变量放在堆内存中,并存储所有参考类型的实际信息,以便于执行执行器。堆内存逻辑上分为三部分。新生代永久性、新生代是类的诞生、成长、消亡领域,一个类在这里生成和应用,最后由垃圾收集器收集,结束生命。新生区分为伊甸园区和生存区两部分,各种各样的伊甸园区都是新出现的。幸存的区域是两个区域:Survivor0space和Survivor1space。伊甸园的空间用完后,程序必须重新创建对象,JVM的垃圾收集器将执行伊甸园地区的垃圾回收(MinorGC),销毁伊甸园地区其他对象不再引用的对象。把伊甸园剩下的物件移到生存零区。生存0区也满了,垃圾回收后转移到1区。那么,如果1区也满了呢?再次转至养老保险区。养老区也已满,此时将生成MajorGC(FullGC)以清理养老区的内存。如果确定在养老区运行FullGC后无法保存对象,则会引发OOM异常“OutOfMemoryError”。如果Java . lang . out of memory error : javaheapspace异常,则表示Java虚拟机的堆内存不足。原因有两个:(1)Java虚拟机的堆内存设置不足以通过-Xms,-Xmx参数调整。(2)在代码中创建了大量大对象,无法长期被垃圾收集器收集(引用)。开始调整堆参数,PART3、Java7、Java8、JDK1.8及以后的初始永久层代将替换为元空间。(堆内存优化简介01),public stic void main(stringargs) longgmax memory=runtime . getruntime()。max memory();/Java虚拟机尝试使用的最大内部清单。longgtotalmemory=runtime . get runtime()。total memory();/返回Java虚拟机的总内存。system . out . print ln( max _ memory= max memory (字节),(maxmemory/(double) 1024/1024)system . out . print ln( total _ memory= total memory (字节),(total memory/(double) 1024/1024),(堆内存调节简介02),默认情况下分配的内存为总内存的“1/4”,初始化的内存为“1/64”,虚拟机参数为:-xms 1024m-xmx 1024m-xx 3360 printggWhile (true) str=strnew random()。nexttint(8888888)new random()。nexttint(99999999);,虚拟机参数:-xms 38m-xmx8m-xx 3360 printgcdetails,-xx 336

温馨提示

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

评论

0/150

提交评论