第3讲-深入理解JVM垃圾收集算法与垃圾收集器幻灯片.pptVIP

第3讲-深入理解JVM垃圾收集算法与垃圾收集器幻灯片.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一、概述 说起垃圾收集(Garbage Collection,GC),大部分人都把这项技术当做Java语言的伴生产物。事实上,GC的历史比Java久远,1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言。当Lisp还在胚胎时期时,人们就在思考GC需要完成的3件事情: 2.1 引用计数算法 2.1 引用计数算法 2.2 根有哪些信誉好的足球投注网站算法 2.3 我们需要做什么 2.4 再谈引用 2.5 强引用(StrongReference) 2.6 软引用(SoftReference) 2.7 弱引用 (WeakReference) 2.8 虚引用(PhantomReference) 三、垃圾收集算法 3.1 标记-清楚算法 3.2 标记-整理算法 3.3 复制算法 3.4 分代收集算法 3.1 标记-清除算法 3.1 标记-清除算法 3.2 标记-整理算法 3.3 复制算法 3.3 复制算法 3.3 复制算法 3.4 分代收集算法 四、垃圾收集器 4.1 Serial收集器(串行收集器) 4.2 ParNew收集器(并行收集器) 4.3 Parallel Scavenge收集器 4.4 Serial Old收集器 4.5 Parallel Old收集器 4.6 CMS(Concurrent Mark Sweep)收集器 4.7 G1收集器 4.1 Serial收集器(串行收集器) 新生代收集器,单线程收集器,使用复制算法,虚拟机-client模式下新生代的默认回收器。 单线程进行垃圾收集,并且在其进行垃圾收集时,必须暂停其它所有工作线程,直到垃圾收集结束,这一过程(stop the world)由虚拟机在后台自动发起自动完成,会在用户不可见的条件下把用户所有正常工作线程全部停掉。当然如果停顿的时间很短是可以接受的,但是如果每次停顿5分钟,任何人都会崩溃。 对于某些客户端程序,新生代占用的内存空间往往很小,此时停顿时间完全可以控制在毫秒级别,因此对于运行在client模式下的虚拟机,Serial收集器是个不错的选择。 优点:简单高效(相对于其它收集器运行于单CPU环境下。没有线程分配的开销,可以获得最高的单线程垃圾收集效率) 4.2 ParNew收集器(并行收集器) 新生代收集器,多线程收集器,使用复制算法。 Serial收集器的多线程版本,除了使用多线程进行垃圾收集外,其余行为与Serial收集器完全一样,依然会stop the world。 很多虚拟机-server模式下的首选新生代收集器,主要原因是CMS收集器(老年代收集器)只能与Serial收集器或者ParNew收集器配合使用 默认开启的回收线程数与CPU个数相同(现代服务器动辄32个逻辑CPU将会导致ParNew收集器开启32个收集线程,这种情况下最好限制下收集线程个数) -XX:ParallelGCThreads 多线程垃圾收集器内存回收开启的线程数量。 4.3 Parallel Scavenge收集器 新生代收集器,多线程收集器,使用复制算法。 该收集器的关注点与其它收集器的关注点不同,其它收集器的目标为尽可能缩短垃圾收集时用户线程的停顿时间,该收集器的目标为达到一个可控的吞吐量,吞吐量=运行用户代码时间/(运行用户代码时间+垃圾回收时间) 吞吐量大能够最高效的利用CPU时间,尽快完成运算任务,适合后台运算、交互不多的应用。 停顿时间短则响应速度快,适合与用户交互比较多的应用。 4.3 Parallel Scavenge收集器 GC拥有自适应调节策略。如果启用该策略,只需要设置好基本参数(-Xmx等),然后设置一个优化目标(最大垃圾收集时间或吞吐量大小),虚拟机会根据当前系统的运行状况收集性能监控信息,动态调整细节参数设置以提供最合适的停顿时间和最大吞吐量。 例如:-XX:SurvivorRatio 新生代中Eden区与Survivor区的大小比率,默认为8,即Eden:survivor=8:1、-XX:PretenureSizeThreshold直接晋升老年代对象大小,超过这个大小的对象将直接在老年代分配,只有Serial和ParNew收集器认识这个参数、-XX:MaxTenuringThreshold 晋升老年代对象年龄,每个对象在坚持过一次Minor GC后对象年龄+1,超过设置数值对象移动至老年代。 -XX:MaxGCPauseMillis 最大停顿时间,仅对Parallel Scavenge收集器生效 -XX:GCTimeRatio 吞吐量大小,默认值为99,即1%的GC时间,仅对Parallel Scavenge收集器生效 -XX:+UseAdaptiveSizePolicy 使用GC自适应调节策略 4

文档评论(0)

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

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

1亿VIP精品文档

相关文档