JVM 手册文档文档.pdfVIP

  1. 1、本文档共85页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
前⾔ ⼤家好,我是楼仔! JVM 系列是我去年写的,整个学习周期是⼀个半⽉,作为 Java 必备技能之⼀,⾮常重要,所以感觉有必要对之前 的 JVM 系列重新整理。 ⽂章内容,⼀个字 —— 肝! 这么说吧,⽬前我还没有发现哪⼀篇 JVM ⽂章,整理的⽐这篇更好,如果有,请⼀定私我。 如果你想了解 JVM 所有的知识,直接看最后⼀章 《第 8 章:JVM 总览》。 不 BB ,上思维导图: 第 1 章:JVM 内存结构 主要讲述JVM 内存结构,以及简单的调优场景。 JVM 系列应该属于Java ⾼阶的内容,本来是想等Java 基础知识积累⼀段时候之后再学习,但是因为⼯作中需要跟进 线上问题,所以急需补充这块知识,本⽂主要是对学习的知识简单做个记录,然后再记录分析问题的过程。 JVM 问题 刚转到⼩⽶⼈事部⻔,发现线上的2台机器⼀直在GC,⽽且频率⾮常⾼,下⾯是GC的⽇志: 如果需要看懂这个GC ⽇志,下⾯的内容就⼀定需要掌握。 垃圾回收算法 如何确定对象已死? 通常,判断⼀个对象是否被销毁有两种⽅法: 引⽤计数算法:为对象添加⼀个引⽤计数器,每当对象在⼀个地⽅被引⽤,则该计数器加1 ;每当对象引⽤失 效时,计数器减1。但计数器为0的时候,就表⽩该对象没有被引⽤。 可达性分析算法:通过⼀系列被称之为“GC Roots”的根节点开始,沿着引⽤链进⾏有哪些信誉好的足球投注网站,凡是在引⽤链上的 对象都不会被回收。 就像上图的那样,绿⾊部分的对象都在GC Roots的引⽤链上,就不会被垃圾回收器回收,灰⾊部分的对象没有在引 ⽤链上,⾃然就被判定为可回收对象。 那么,问题来了,这个GC Roots⼜是什么?下⾯列举可以作为GC Roots的对象: Java 虚拟机栈中被引⽤的对象,各个线程调⽤的参数、局部变量、临时变量等。 ⽅法区中类静态属性引⽤的对象,⽐如引⽤类型的静态变量。 ⽅法区中常量引⽤的对象。 本地⽅法栈中所引⽤的对象。 Java 虚拟机内部的引⽤,基本数据类型对应的Class对象,⼀些常驻的异常对象。 被同步锁(synchronized)持有的对象。 垃圾回收算法 标记--清除算法 ⻅名知义,标记--清除算法就是对⽆效的对象进⾏标记,然后清除。 对于标记--清除算法,你⼀定会清楚看到,在进⾏垃圾回收之后,堆空间有⼤量的碎⽚,出现了不规整的情况。在 给⼤对象分配内存的时候,由于⽆法找到⾜够的连续的内存空间,就不得不再⼀次触发垃圾收集。另外,如果Java 堆中存在⼤量的垃圾对象,那么垃圾回收的就必然进⾏⼤量的标记和清除动作,这个势必造成回收效率的降低。 复制算法 标记--复制算法就是把Java 堆分成两块,每次垃圾回收时只使⽤其中⼀块,然后把存活的对象全部移动到另⼀块区 域。 标记--复制算法有⼀个很明显的缺点,那就是每次只使⽤堆空间的⼀半,造成了Java 堆空间使⽤率的的下降。 标记--整理算法 标记--整理算法算是⼀种折中的垃圾收集算法,在对象标记的过程,和前⾯两个执⾏的是⼀样步骤。但是,进⾏标 记之后,存活的对象会移动到堆的⼀端,然后直接清理存活对象以外的区域就可以了。这样,既避免了内存碎⽚, 也不存在堆空间浪费的说法了。但是,每次进⾏垃圾回收的时候,都要暂停所有的⽤户线程,特别是对⽼年代的对 象回收,则需要更⻓的回收时间,这对⽤户体验是⾮常不好的。 垃圾回收器 HotSpot VM中的垃圾回收器,以及适⽤场景: 内存模型 内存模型 堆内存模型 内存模型⼏个重要点: JVM 内存会划分为堆内存和⾮堆内存,堆内存中也会划分为年轻代和⽼年代,⽽⾮堆内存则为永久代。 新⽣代Young和⽼年代Old默认占⽐是1:3。 年轻代⼜会分为Eden和Survivor区,Survivor也会分为FromPlace和ToPlace ,Eden、FromPlace和ToPlace 的默认占⽐为 8:1:1 。 GC类型 Minor GC/Young GC :针对新⽣代的垃圾收集; Major GC/Old GC :针对⽼年代的垃圾收集。 Full GC :针对整个Java 堆以及⽅法区的垃圾收集。 Minor GC⼯作原理 通常情况下,初次被创建的对象存放在新⽣代的Eden区,当第⼀次触发Minor GC,Eden区存活的对象被转移到 Survivor区的某⼀块区域。以后再次触发Minor GC的时候,Eden区的对象连同⼀块Survivor区的对象⼀起,被转 移到了另⼀块Su

文档评论(0)

jayjiao + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档