资源描述:
《jvmgclog分析和调优》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、JAVAJVMGCLOG分析和调优【转】 2010-09-0922:55:48
2、 分类:java性能
3、举报
4、字号 订阅在大型的java运用中,要进行程序调优,指定一个合适的垃圾回收机制是必不可少的,那如何可确定某gc是否使得程序最优化呢?我们可以查看jvm打印出的gc日志来分析,并做出进一步优化,而目前并没有一篇文章明确的指明java中各种gc算法打印出日志的格式,以及如何阅读。所以接下来本文将试着边介绍各种垃圾回收机制边解释该回收机制下log的格式。1,垃圾收集算法1.1引用计数法(ReferenceCounti
5、ngCollector)系统记录对象被应用的次数,当应用次数为0时,就可以将该对象所占内存回收。该算法可以不用暂停运用,但缺点是无法解决重复运用的问题。所以java并没有提供此类垃圾回收器。1.2 tracing算法(TracingCollector) tracing算法的垃圾收集器从根集开始扫描,识别出哪些对象可达,哪些对象不可达,并用某种方式标记可达对象。1.2.1 复制(Copying)算法复制算法将堆等分成2个区域,一个区域含有现在的数据对象(ToSpace),而另一个区域包含废弃的数据(FromSpace)
6、。复制算法将存活的对象从FromSpace复制到ToSpace,然后切换Fromspace和ToSpace的指针,以前的FromSpace变为现在的ToSpace区域。 1.2.2 标记-整理(Mark-Compact)算法 1.2.3标记-清除(Mark-Sweep) Usingthe-XXflagsforourcollectorsforjdk6, ·UseSerialGCis"Serial"+"SerialOld"·UseParNewGCis"ParNew"+"SerialOld"·UseConcMarkSwee
7、pGCis"ParNew"+"CMS"+"SerialOld"."CMS"isusedmostofthetimetocollectthetenuredgeneration."SerialOld"isusedwhenaconcurrentmodefailureoccurs.·UseParallelGCis"ParallelScavenge"+"SerialOld"·UseParallelOldGCis"ParallelScavenge"+"ParallelOld" SerailGC1,SerialYoungGC 0.
8、246:[GC0.246:[DefNew:1403K->105K(1984K),0.0109275secs]1403K->1277K(6080K),0.0110143secs] 2,SerialOlgGc1.133:[GC1.133:[DefNew:960K->64K(960K),0.0012208secs]1.135:[Tenured:7334K->7142K(7424K),0.0213756secs]7884K->7142K(8384K),[Perm:364K->364K(12288K)],0.0226997se
9、cs][Times:user=0.01sys=0.00,real=0.02secs] ParrallelGC serailGC的适应mutiCore的加强版,就是在minorGC时候采用并行的进行收集,而fullGC并没有改变 ParralllelCompactingGC 在parrallelGC的基础上将fullgc也变为并发的了Withtheparallelcompactingcollector,theoldandpermanentgenerationsarecollectedinastop-theworld,m
10、ostlyparallelfashionwithslidingcompaction.Thecollectorutilizesthreephases.First,eachgenerationislogicallydividedintofixed-sizedregions.Inthemarkingphase,theinitialsetofliveobjectsdirectlyreachablefromtheapplicationcodeisdividedamonggarbagecollectionthreads,andth
11、enallliveobjectsaremarkedinparallel.Asanobjectisidentifiedaslive,thedatafortheregionitisinisupdatedwithinformationaboutthesizeandlocationoftheobject.备注待翻译 ConcurrentM