JVM调优——之CMS GC日志分析

最近在学习JVM和GC调优,今天总结下CMS的一些特点和要点,首先贴上一个实际的CMS GC log,先来解读下各个元素。

/*
  从下面的GC日志可以看出,当前最新版本(JDK1.8)中的CMS大致分为6步
  1. CMS Initial Mark 初始标记
  2. CMS-concurrent-mark 并发标记
  3. CMS-concurrent-preclean 预处理
  4. CMS-concurrent-abortable-preclean 预处理
  5. CMS Final Remark 重新标记  6. CMS-concurrent-sweep 并发清除  7. CMS-concurrent-reset 重置参数

 */

//初始标记 这个动作需要stop the world 这里只是标记一下GC Roots能直接关联到的对象
15887.169: [GC (CMS Initial Mark) [1 CMS-initial-mark: 1307523K(1398144K)]
1336024K(2027264K), 0.0046835 secs] [Times: user=0.01 sys=0.00, real=0.00 secs] 

15887.173: [CMS-concurrent-mark-start]15887.443: [CMS-concurrent-mark: 0.269/0.269 secs] [Times: user=0.90 sys=0.16, real=0.27 secs] 

15887.443: [CMS-concurrent-preclean-start]15887.462: [CMS-concurrent-preclean: 0.019/0.020 secs] [Times: user=0.06 sys=0.02, real=0.02 secs] 

15887.463: [CMS-concurrent-abortable-preclean-start]15888.433: [CMS-concurrent-abortable-preclean: 0.880/0.970 secs] [Times: user=3.00 sys=0.60, real=0.97 secs]

[GC (CMS Final Remark) [YG occupancy: 380362 K (629120 K)]15888.435: [Rescan (parallel) ,
0.1452201 secs]15888.580: [weak refs processing, 0.0015400 secs]
15888.582: [class unloading, 0.0541155 secs]
15888.636: [scrub symbol table, 0.0049675 secs]
15888.641: [scrub string table, 0.0009185 secs][1 CMS-remark: 1307523K(1398144K)]
1687886K(2027264K), 0.2161993 secs] [Times: user=0.62 sys=0.01, real=0.22 secs] 
15888.651: [CMS-concurrent-sweep-start]15889.816: [CMS-concurrent-sweep: 0.947/1.165 secs] [Times: user=3.74 sys=0.68, real=1.17 secs] 

15889.816: [CMS-concurrent-reset-start]15889.838: [CMS-concurrent-reset: 0.022/0.022 secs] [Times: user=0.07 sys=0.02, real=0.02 secs]
时间: 2024-10-10 11:54:30

JVM调优——之CMS GC日志分析的相关文章

jvm调优-从eclipse开始

jvm调优-从eclipse开始 概述 什么是jvm调优呢?jvm调优就是根据gc日志分析jvm内存分配.回收的情况来调整各区域内存比例或者gc回收的策略:更深一层就是根据dump出来的内存结构和线程栈来分析代码中不合理的地方给予改进.eclipse优化主要涉及的是前者,通过gc日志来分析.本文主要是通过分析eclipse gc日志为例来示例如何根据gc日志来分析jvm内存而进行调优,像根据关闭eclipse启动项.关闭各种校验等措施来优化eclipse本文不再阐述,网上有很多,本次测试的ecl

Twitter 工程师谈 JVM 调优

一. 调优需要关注的几个方面 内存调优 CPU 使用调优 锁竞争调优 I/O 调优 二. Twitter 最大的敌人:延迟 导致延迟的几个原因? 最大影响因素是 GC 其他的有:锁和线程调度.I/O.算法数据结构选取不当效率低 三. 内存性能调优 (1)内存占用调优 OutOfMemoryError 异常原因:可能真的数据量太大.可能要数据显示的太多.可能内存泄露 数据量太大观察及解决: 查看 GC 日志, 看 Full GC 前后内存变化, 变化不大说明确实数据量太大 尝试增加 JVM 的内存

第九章 JVM调优推荐

说明:本文主要参考自<分布式Java应用:基础与实践> 1.JVM的调优主要是内存的调优,主要调两个方面: 各个代的大小 垃圾收集器选择 2.各个代的大小 常用的调节参数 -Xmx -Xms -Xmn -XX:SurvivorRatio -XX:MaxTenuringThreshold -XX:PermSize -XX:MaxPermSize 原则 -Xmx==-Xms:防止堆内存频繁进行调整,调整的时机见<第一章 JVM内存结构> -Xmn:通常设为-Xmx/4(这是我在企业中实

jvm的GC日志分析 [转]

jvm的GC日志分析 标签: jvm内存javagc 2015-06-22 16:37 1566人阅读 评论(1) 收藏 举报  分类: Java(4)  JVM的GC日志的主要参数包括如下几个: -XX:+PrintGC 输出GC日志 -XX:+PrintGCDetails 输出GC的详细日志 -XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式) -XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:5

JVM调优经验分享

前言 一.JVM调优知识背景简介 二.JVM调优参数简介 三.JVM调优目标 四.JVM调优经验 结束语 <br/> 本次分享探讨的JVM调优是指server端运行的JVM调优,适应版本为[1.6– 1.7], 不涉及最新的1.8版本. 假设线程池.连接池.程序代码等都已经做过优化,效果(系统吞吐量.响应性能)仍然不理想,我们就可以考虑JVM调优了. <br/> 一. JVM调优知识背景简介 1.堆与栈的概念 堆和栈是程序运行的关键:栈是运行时的单位,而堆是存储的单位. 栈解决程序

jvm调优小结

不区分tomcat,resion等应用,主要是针对jvm调优 tomcat家目录下catalina.sh  catalina.bat 从http://unixboy.iteye.com/blog/174173 http://my.oschina.net/shootercn/blog/15393这个更详细 http://www.360doc.com/content/15/0429/15/7853380_466822446.shtml详细讲解-XX:ParallelGCThreads 学到了很多东西

【转 】JVM调优 网上一篇很好的文章 (复制摘要了 一边参考 )

为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的.因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率. 在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象.线程.Socket连接,这类对象跟业务直接挂钩,因此生命周期比较长.但是还有一些对象,主要是程序运行过程中生成的临时变量,这些对象生命周期会比较短,比如:String对象,由于其不变类的特性,系统会产生大量的这些对象,有些对象甚至

转: jvm调优参数总结

JVM里的GC(Garbage Collection)的算法有很多种,如标记清除收集器,压缩收集器,分代收集器等等,详见HotSpot VM GC 的种类 现在比较常用的是分代收集(generational collection,也是SUN VM使用的,J2SE1.2之后引入),即将内存分为几个区域,将不同生命周期的对象放在不同区域里:young generation,tenured generation和permanet generation.绝大部分的objec被分配在young gener

JVM调优参数

堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理内存限制.32位系统下,一般限制在1.5G~2G:64为操作系统对内存无限制.我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m.典型设置: java -Xmx3550m -Xms3550m -Xmn2g -Xss128k-Xmx3550m:设置JVM最大可用内存为3550M.-Xms3550m:设