资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
您还未登录 ! 我的应用 登录 注册 论坛首页 Java编程和Java企业应用版 Java综合 GC的的类类型以及型以及对应对应日志的解日志的解释释 全部 Hibernate Spring Struts iBATIS 企业应用 设计模式 DAO 领域模型 OO Tomcat SOA JBoss Swing Java综合 甘特甘特图图、网网络图络图、日日历图历图、项项目管理中目管理中间间件件 浏览 498 次 主主题题:GC的的类类型以及型以及对应对应日志的解日志的解释释 精精华华帖 帖 (0) : 良好帖 良好帖 (0) : 新手帖 新手帖 (0) : 隐隐藏帖藏帖 (0) 作者正文发表时间:2010-02-26 最后修改:2010-03-07 在大型的java运用中,要进行程序调优,指定一个合适的垃圾回收机制是必不可少的,那如何可确定某gc是否使得程序最优化呢?我们可以查看jvm打印出的gc日志来分 析,并做出进一步优化,而目前并没有一篇文章明确的指明java中各种gc算法打印出日志的格式,以及如何阅读。所以接下来本文将试着边介绍各种垃圾回收机制边解释该回 收机制下log的格式。 1,垃垃圾圾收集算法收集算法 1.1 引用引用计计数数法法(Reference Counting Collector) 系统记录对象被应用的次数,当应用次数为0时,就可以将该对象所占内存回收。该算法可以不用暂停运用,但缺点是无法解决重复运用的问题。所以java并没有提供此类垃 圾回收器。 1.2 tracing算法算法(Tracing Collector) tracing算法的垃圾收集器从根集开始扫描,识别出哪些对象可达,哪 些对象不可达,并用某种方式标记可达对象。 1.2.1 复复制制( ( Copying )算法算法 复制算法将堆等分成2个区域,一个区域含有现在的数据对象(ToSpace),而另一个区域包含废弃的数据(FromSpace)。复制算法将存活的对象从FromSpace复制到 ToSpace,然后切换Fromspace和ToSpace的指针,以前的FromSpace变为现在的ToSpace区域。 1.2.2 标记标记整理整理( ( Mark-Compact )算法算法 1.2.3 标记标记-清清除除(Mark-Sweep) ) Using the -XX flags for our collectors for jdk6, lUseSerialGC is “Serial“ + “Serial Old“ lUseParNewGC is “ParNew“ + “Serial Old“ lUseConcMarkSweepGC is “ParNew“ + “CMS“ + “Serial Old“. “CMS“ is used most of the time to collect the tenured generation. “Serial Old“ is used when a concurrent mode failure occurs. lUseParallelGC is “Parallel Scavenge“ + “Serial Old“ lUseParallelOldGC is “Parallel Scavenge“ + “Parallel Old“ SerailGC 1,Serial Young GC 0.246: GC 0.246: DefNew: 1403K-105K(1984K), 0.0109275 secs 1403K-1277K(6080K), 0.0110143 secs 猎头职位: 北京北京: JavaEye招聘Java搜索工程师 相关文章: l一次Java垃圾收集调优实战 l优化JVM参数提高eclipse运行速度 l通过GC输出分析内存泄露问题 lJVM调优的问题 推荐圈子: Groovy on Grails 更多相关推荐 页码,1/4GC的类型以及对应日志的解释 - Java综合 - Java - JavaEye论坛2010-11-9http:/www.javaeye.com/topic/603347UnRegisteredlwang_scu l等级: 初级会员 l l性别: l文章: 210 l积分: 50 l来自: 重庆 l 2, Serial Olg Gc 1.133: GC 1.133: DefNew: 960K-64K(960K), 0.0012208 secs1.135: Tenured: 7334K-7142K(7424K), 0.0213756 secs 7884K-7142K(8384K), Perm : 364K-364K(12288K), 0.0226997 secs Times: user=0.01 sys=0.00, real=0.02 secs Parrallel GC serailGC的适应muti Core的加强版,就是在minorGC时候采用并行的进行收集,而fullGC并没有改变 Parralllel Compacting GC 在parrallelGC的基础上将fullgc也变为并发的了 With the parallel compacting collector, the old and permanent generations are collected in a stop-theworld,mostly parallel fashion with sliding compaction. The collector utilizes three phases. First, each generation is logically divided into fixed-sized regions. In the marking phase, the initial set of live objects directly reachable from the application code is divided among garbage collection threads, and then all live objects are marked in parallel. As an object is identified as live, the data for the region it is in is updated with information about the size and location of the object.备注 待翻译 Concurrent Mark-Sweep (CMS) Collector 有一种需求是应用的相应时间比应用的吞吐重要,为了满足这种需求,jvm提供了该场景下的垃圾收集器CMS,使用该垃圾收集 器的时候minorGC和 ParralelGC当中采用的一样,只是在老生代更换了不同的算法。 CMS将老生代的回收分为4个阶段 其中只有2个阶段是要stop-the-world的,而其余阶段是不需要的,因此降低了系统暂停时间,缺点是在其余的2个阶段会更应用抢jvm资源。 从上图可以看出,CMS的运行过程。 A collection cycle for the CMS collector starts with a short pause, called the initial mark, that identifies the initial set of live objects directly reachable from the application code. Then, during the concurrent marking phase, the collector marks all live objects that are transitively reachable from this set. Because the application is running and updating reference fields while the marking phase is taking place, not all live objects are guaranteed to be marked at the end of the concurrent marking phase. To handle this, the application stops again for a second pause, called remark, which finalizes marking by revisiting any objects that were modified during the concurrent marking phase. Because the remark pause is more substantial than the initial mark, multiple threads are run in parallel to increase its efficiency. 备注 待翻译 Concurrent Mark-Sweep GC log format: Full GC 被被调调用的出用的出现现情情况况 promotion failed( mark-sweep-compact stop-the-world ) ParNew (promotion failed): 当老生代空闲空间存在碎片,导致没有足够大的连续空间开存放新生代对象的升级时,机 会触发promotion failed。 此时调用一个Mark-Compact 垃圾收集器是很有必要的。(默认采用 Serial Old GC) 页码,2/4GC的类型以及对应日志的解释 - Java综合 - Java - JavaEye论坛2010-11-9http:/www.javaeye.com/topic/603347UnRegistered106.641: GC 106.641: ParNew (promotion failed): 14784K-14784K(14784K), 0.0370328 secs106.678: CMS106.715: CMS-concurrent-mark: 0.065/0.103 secs Times: user=0.17 sys=0.00, real=0.11 secs (concurrent mode failure): 41568K-27787K(49152K), 0.2128504 secs 52402K-27787K(63936K), CMS Perm : 2086K-2086K(12288K), 0.2499776 secs Times: user=0.28 sys=0.00, real=0.25 secs full promotion guarantee failure ( concurrent mode failure ): 当垃圾回收算法预测在下一次Conc-Mark-Sweep算法调用之前,老生代的空余空间将会被系统占用光。为了解 决这一问题,垃圾回收算法进入conccurent mode failure状态,调用一个 stop-the-world(serail Old GC)来清理系统Heap。 eg:为了触发这种情况 我们先分配64m内存给jvm,然后新生代和老年代的占用比例为7,即老年代用了7*8=58 触发concurrent mode failu
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号