JVM内存监控及调优方法教程分析.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Metarnet Technologies Co.,Ltd. JVM内存监控及性能调优 * 黄国庆 重庆市擎天博元科技有限公司 * Metarnet Technologies Co.,Ltd. * JVM内存监控及性能调优 主要内容 什么是JVM JVM内存模型 内存分配 垃圾回收 监控实例 配置实例 * Metarnet Technologies Co.,Ltd. * JVM内存监控及性能调优 什么是JVM? 基本上来说,JVM是一个虚拟运行环境,对于字节码来说就像是一个机器一样,可以执行任务,并通过底层实现执行内存相关的操作。 JVM使Java程序做到了“一次编写,到处运行”。 JVM解放了程序员,使程序员不必再关系对象的生命周期,使程序员不必再关心应该在何时释放内存。 可以将JVM当做是一种专为Java而生的特殊的操作系统,它的工作是管理运行Java应用程序的运行时环境。 * Metarnet Technologies Co.,Ltd. * JVM内存监控及性能调优 什么是OOM? out-of-memory 系统无法为新线程和新对象分配空间 “堆”满了,垃圾回收不成功 影响:业务宕机 * Metarnet Technologies Co.,Ltd. * JVM内存监控及性能调优 JVM内存模型 各个年代: 新生代(Young Generation) 伊甸园空间(Eden?)、幸存者空间(Survivor?) 最新被创建的对象会被分配到这里,由于大部分对象在创建后会很快变得不可到达,所以很多对象被创建在新生代,然后消失。 老年代(Old Generation) 对象没有变得不可达,并且从新生代中存活下来,会被拷贝到这里。 持久代(Permanent Generation) 也被称为方法区(method area)。他用来保存类常量以及字符串常量。 先理解养鱼专业户的“渔池” ? * Metarnet Technologies Co.,Ltd. * JVM内存监控及性能调优 JVM内存模型 每个空间的执行顺序如下: 绝大多数刚刚被创建的对象会存放在伊甸园空间。 在伊甸园空间执行了第一次GC之后,存活的对象被移动到其中一个幸存者空间。 ? 此后,在伊甸园空间执行GC之后,存活的对象会被堆积在同一个幸存者空间。 ?当一个幸存者空间饱和,还在存活的对象会被移动到另一个幸存者空间。之后会清空已经饱和的那个幸存者空间。 在以上的步骤中重复几次依然存活的对象,就会被移动到老年代。 * Metarnet Technologies Co.,Ltd. * JVM内存监控及性能调优 JVM内存模型 垃圾回收(GC)是旨在释放不可达Java对象所占用的内存的过程,是Java virtual machine(JVM)中动态内存管理系统的核心组成部分。在一个典型的垃圾回收周期中,所有仍被引用的对象,即可达对象,会被保留。没有被引用的Java对象所占用的内存会被释放并回收,以便分配给新创建的对象。 发生在新生代的对象的消失:minor GC(局部垃圾回收) 发生在老年代的对象的消失:major GC(完全垃圾回收) * Metarnet Technologies Co.,Ltd. * JVM内存监控及性能调优 内存分配 当你在启动Java应用程序时指定了启动参数_-Xmx_(例如,java -Xmx2g MyApp),则相应大小的内存会被分配给Java进程。这块内存即所谓的*Java堆*(或简称为*堆*)。这块专用的内存地址空间用于存储Java应用程序所创建的对象。随着Java应用程序的运行,会不断的创建新对象并为之分配内存,Java堆(即地址空间)会逐渐被填满。 32位与64位的区别 32位JVM最大堆为1.5G 64位JVM最大堆为操作系统中内存可使用空间大小 * Metarnet Technologies Co.,Ltd. * JVM内存监控及性能调优 垃圾回收 minor GC major GC 目标 快速释放不可达对象所占用的内存,防止应用程序出现OOM错误。 回收内存时,对应用程序的性能(指延迟和吞吐量)的影响要尽可能小 原则 JVM堆不是越大越好(堆越大GC时间越长) 不是每个应用程序的JVM配置均可以一样(应用规模、结构和响应要求不一样) 调优的操作是循序渐进的(摸着石头过河) * Metarnet Technologies Co.,Ltd. * JVM内存监控及性能调优 监控实例 JVM监控工具 命令行: jstat (关注GC的次数和GC所耗时间) jmap (将内存堆印象保存为文件) HeapAnalyzer(分析jmap保存的文件) 图形化 Jconsole VisualVM * Metarnet Tec

文档评论(0)

美洲行 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档