GC: CMS垃圾回收器三(实践)
jstat -gc -t [pid] 1000 监控日志... ,抽取其中关键记录不一定连续
应用启动时间 2015-06-23 10:22:27 ,换算后,第二条记录时间是2015-06-24 22:35:16 ,转换过程中有毫秒级的误差,与GC日志一致。
| Timestamp | S0C | S1C | S0U | S1U | EC | EU | OC | OU | PC | PU | YGC | YGCT | FGC | FGCT | GCT |
| 130368.2 | 209664.0 | 209664.0 | 142366.4 | 0.0 | 1677824.0 | 1677824.0 | 2097152.0 | 1043374.3 | 131072.0 | 15537.9 | 80 | 18.274 | 0 | 0.000 | 18.274 |
| 130369.2 | 209664.0 | 209664.0 | 0.0 | 137896.2 | 1677824.0 | 19949.5 | 2097152.0 | 1054947.1 | 131072.0 | 15537.9 | 81 | 18.532 | 1 | 0.039 | 18.571 |
| 130374.3 | 209664.0 | 209664.0 | 0.0 | 137896.2 | 1677824.0 | 33201.4 | 2097152.0 | 1054837.5 | 131072.0 | 15537.9 | 81 | 18.532 | 2 | 0.076 | 18.608 |
以下是开启-XX:+PrintGCDetails -XX:+PrintGCDateStamps 后的部分日志:
第一步:CMS-initial-mark
2015-06-24T22:35:17.084+0800: 130368.643: [GC [1 CMS-initial-mark: 1054947K(2097152K)] 1193557K(3984640K), 0.0386010 secs] [Times: user=0.03 sys=0.00, real=0.04 secs]
- 本例中启动参数未设置-XX:+UseCMSInitiatingOccupancyOnly ,只设置了-XX:CMSInitiatingOccupancyFraction=70 ,系统根据统计数据自行决定50%触发cms gc ,而不是在70%时候。
- 格式: PrintGCDateStamps部分 [GC [1 CMS-initial-mark: OU(OC)] SU+EU+OU(-Xmx), 耗时] []
第二步:CMS-concurrent-mark
2015-06-24T22:35:17.125+0800: 130368.684: [CMS-concurrent-mark-start]
2015-06-24T22:35:17.152+0800: 130368.711: [CMS-concurrent-mark: 0.027/0.027 secs] [Times: user=0.16 sys=0.00, real=0.03 secs]
第三步:CMS-concurrent-preclean
2015-06-24T22:35:17.153+0800: 130368.712: [CMS-concurrent-preclean-start]
2015-06-24T22:35:17.164+0800: 130368.723: [CMS-concurrent-preclean: 0.011/0.011 secs] [Times: user=0.04 sys=0.00, real=0.01 secs]
第四步:CMS-concurrent-abortable-preclean
2015-06-24T22:35:17.164+0800: 130368.723: [CMS-concurrent-abortable-preclean-start]
CMS: abort preclean due to time 2015-06-24T22:35:22.481+0800: 130374.041: [CMS-concurrent-abortable-preclean: 5.216/5.317 secs] [Times: user=6.14 sys=0.11, real=5.32 secs]
第五步:CMS-remark
2015-06-24T22:35:22.486+0800: 130374.045: [GC[YG occupancy: 171097 K (1887488 K)]2015-06-24T22:35:22.486+0800: 130374.045: [Rescan (parallel) , 0.0175320 secs]2015-06-24T22:35:22.504+0800: 130374.063: [weak refs processing, 0.0005460 secs]2015-06-24T22:35:22.505+0800: 130374.064: [class unloading, 0.0074730 secs]2015-06-24T22:35:22.512+0800: 130374.071: [scrub symbol table, 0.0054870 secs]2015-06-24T22:35:22.518+0800: 130374.077: [scrub string table, 0.0013050 secs] [1 CMS-remark: 1054947K(2097152K)] 1226044K(3984640K), 0.0372980 secs] [Times: user=0.25 sys=0.00, real=0.04 secs]
第六步:CMS-concurrent-sweep-start
2015-06-24T22:35:22.525+0800: 130374.084: [CMS-concurrent-sweep-start]
2015-06-24T22:35:22.546+0800: 130374.105: [CMS-concurrent-sweep: 0.021/0.021 secs] [Times: user=0.03 sys=0.00, real=0.02 secs]
第七步:CMS-concurrent-reset
2015-06-24T22:35:22.547+0800: 130374.106: [CMS-concurrent-reset-start]
2015-06-24T22:35:22.564+0800: 130374.123: [CMS-concurrent-reset: 0.017/0.017 secs] [Times: user=0.01 sys=0.00, real=0.02 secs]
GC: CMS垃圾回收器三(实践)的更多相关文章
- GC: CMS垃圾回收器一(英文版)
Memory Management in the Java HotSpot™ Virtual Machine Concurrent Mark-Sweep (CMS) Collector For man ...
- 关于 CMS 垃圾回收器,你真的懂了吗?
大家好,我是树哥. 前段时间有个小伙伴去面试,被问到了 CMS 垃圾回收器的详细内容,没答出来.实际上,CMS 垃圾回收器是回收器历史上很重要的一个节点,其开启了 GC 回收器关注 GC 停顿时间的历 ...
- 探索ParNew和CMS垃圾回收器
前言 上篇文章我们一起分析了JVM的垃圾回收机制,了解了新生代的内存模型,老年代的空间分配担保原则,并简单的介绍了几种垃圾回收器.详细内容小伙伴们可以去看一下我的上篇文章:秒懂JVM的垃圾回收机制. ...
- 【JVM】CMS垃圾回收器
一.简介 Concurrent Mark Sweep,是一种以获取最短回收停顿时间为目标的收集器,尤其重视服务的响应速度. CMS是老年代垃圾回收器,基于标记-清除算法实现.新生代默认使用ParNew ...
- 浅析CLR的GC(垃圾回收器)
文章目录: 了解托管堆和GC GC高效的处理方式—代 特殊类型的清理 手动监控和控制对象生命周期 1.了解托管堆和GC 在面向对象环境中,每一个类型都代表了一种资源.我们要使用这些资源,就要为这些代表 ...
- GC:垃圾回收器简介
Java堆内存被划分为新生代和年老代两部分,新生代主要使用复制和标记-清除垃圾回收算法,年老代主要使用标记-整理垃圾回收算法,因此java虚拟中针对新生代和年老代分别提供了多种不同的垃圾收集器,JDK ...
- jvm——CMS 垃圾回收器(未完)
https://matt33.com/2018/07/28/jvm-cms/ 阶段1:Initial Mark stop-the-wolrd 标记那些直接被 GC root 引用或者被年轻代存活对象所 ...
- JVM GC算法 垃圾回收器
JVM的垃圾回收算法有三种: 1.标记-清除(mark-sweep):啥都不说,直接上图 2.标记-整理(mark-compact) 3.复制(copy) 分代收集算法 ...
- Visual GC(监控垃圾回收器)
Java VisualVM默认没有安装Visual GC插件,需要手动安装,JDK的安装目录的bin目露下双击jvisualvm.exe,即可打开Java VisualVM,点击菜单栏 工具-> ...
随机推荐
- 1.使用Fiddler进行接口测试
1.Fiddler既可以用来抓包数据,亦可以进行接口测试.(可参考我的另一篇博客:https://www.cnblogs.com/android-it/p/9523548.html 进行接口的编写) ...
- 转 : 配置 mysql-advanced-5.6.21-winx64 免安装版
mySQL包:mysql-advanced-5.6.21-winx64.zip 下载地址:https://edelivery.oracle.com/EPD/Search/handle_go 服务器版本 ...
- 字符串(二)(PHP)
1.大段文本在PHP中应该如果表示? 答: <?php $str = <<<aaa hello word; fjasdflj fjslad aaa;date_sub() aaa ...
- 让memcached分布式
memcached是应用最广的开源cache产品,它本身不提供分布式的解决方案,我猜想一方面它想尽量保持产品简单高效,另一方面cache的key-value的特性使得让memcached分布式起来比较 ...
- 洛谷 P3302 [SDOI2013]森林 Lebal:主席树 + 启发式合并 + LCA
题目描述 小Z有一片森林,含有N个节点,每个节点上都有一个非负整数作为权值.初始的时候,森林中有M条边. 小Z希望执行T个操作,操作有两类: Q x y k查询点x到点y路径上所有的权值中,第k小的权 ...
- 1096 Consecutive Factors
题意: 给出一个正整数N,找到最长的连续的可分解因子.如N=630,可被分解为630=3*5*6*7,其中5*6*7是3个连续的因子. 思路: 首先,需要明确,对于任何一个整数,如果它是素数,则不可被 ...
- python开发mysql:单表查询&多表查询
一 单表查询,以下是表内容 一 having 过滤 1.1 having和where select * from emp where id > 15; 解析过程;from > where ...
- 第三章 深入分析Java Web中的中文编码问题
3.1 几种常见的编码格式 3.1.1 为什么要编码 一个字节 byte只能表示0~255个符号,要表示更多的字符,需要编码. 3.1.2 如何翻译 ASCII码:有128个,用一个字节的低7位表示. ...
- XModem协议
XModem协议介绍: XModem是一种在串口通信中广泛使用的异步文件传输协议,分为XModem和1k-XModem协议两种,前者使用128字节的数据块,后者使用1024字节即1k字节的数据块. 一 ...
- SecureCRT乱码问题解决方法
环境:SecureCRT登陆REDHAT5.3 LINUX系统 问题:vi编辑器编辑文件时文件中的内容中文显示乱码,但是直接使用linux系统terminal打开此文件时中文显示正常,确诊问题出现在客 ...