在linux上gc日志详解,JVM CMS GC日志详解
# JDK8
-Xms20M -Xmx20M -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC
CMS 日志格式:
[GC (Allocation Failure) [ParNew: 5504K->640K(6144K), 0.0136830 secs] 5504K->1556K(19840K), 0.0137738 secs] [Times: user=0.06 sys=0.01, real=0.01 secs]
[GC (Allocation Failure) [ParNew: 6144K->544K(6144K), 0.0012950 secs] 7060K->2102K(19840K), 0.0013310 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
[GC (Allocation Failure) [ParNew: 6048K->640K(6144K), 0.0175172 secs] 7606K->4311K(19840K), 0.0176172 secs] [Times: user=0.07 sys=0.01, real=0.01 secs]
[GC (Allocation Failure) [ParNew: 6144K->640K(6144K), 0.0163793 secs] 9815K->7694K(19840K), 0.0164765 secs] [Times: user=0.10 sys=0.01, real=0.01 secs]
# ParNew:年轻代收集器 6144->640:收集前后的对比 (6144):整个年轻代容量 9815 ->7694:整个堆的情况(19840):整个堆大小
[GC (CMS Initial Mark) [1 CMS-initial-mark: 7054K(13696K)] 7806K(19840K), 0.0023289 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
# 初始标记,STW, 7054K(13696K) 老年代使用空间、最大空间 7806K(19840K) 整个堆使用空间、最大空间
[CMS-concurrent-mark-start]
[CMS-concurrent-mark: 0.015/0.015 secs] [Times: user=0.05 sys=0.00, real=0.01 secs]
# 并发标记,这里的时间意义不大,因为是并发执行
[CMS-concurrent-preclean-start]
[CMS-concurrent-preclean: 0.000/0.000 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
# //标记Card为Dirty,也称为Card Markin
[GC (CMS Final Remark) [YG occupancy: 1865 K (6144 K)][Rescan (parallel) , 0.0015431 secs][weak refs processing, 0.0000870 secs][class unloading, 0.0017562 secs][scrub symbol table, 0.0012416 secs][scrub string table, 0.0006834 secs][1 CMS-remark: 7054K(13696K)] 8919K(19840K), 0.0054720 secs] [Times: user=0.01 sys=0.01, real=0.01 secs]
# STW阶段,YG occupancy: 年轻代占用及容量
#[Rescan (parallel):STW下的存活对象标记
#weak refs processing: 弱引用处理
#class unloading: 卸载用不到的class
#scrub symbol(string) table: cleaning up symbol and string tables which hold class-level metadata and internalized string respectively
#CMS-remark: 7054K(13696K): 阶段过后的老年代占用及容量
# 8919K(19840K) : 阶段过后的堆占用及容量
[CMS-concurrent-sweep-start]
[CMS-concurrent-sweep: 0.010/0.010 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]
# 标记已经完成,进行并发清理
[CMS-concurrent-reset-start]
[CMS-concurrent-reset: 0.000/0.000 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
# 重置内部结构,为下次GC做准备
@SvenAugustus(https://www.flysium.xyz/)
更多请关注微信公众号【编程不离宗】,专注于分享服务器开发与编程相关的技术干货:
在linux上gc日志详解,JVM CMS GC日志详解相关推荐
- Linux下通过jstat命令查看jvm的GC情况
jstat命令可以查看堆内存各部分的使用量,以及加载类的数量.命令的格式如下: jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数] 注意!!!:使用的jdk版本是jdk8. ...
- java 内存 开发 经验_七年开发经验详解JVM的GC 算法
概述 GC 是 JVM 自带的功能,它能够自动回收对象,清理内存,这是 Java 语言的一大优势,但是GC绝不仅伴随着Java,相反,GC历史比Java更悠久.关于GC,我认为有四个问题需要解决: 为 ...
- 详解JVM和GC垃圾回收
文章目录 JVM架构图分析 Java虚拟机运行时数据区 对象的创建方式有几种? 创建对象的过程 对象的访问定位 垃圾回收机制 如何判断一个对象是否可以回收 垃圾回收算法都有哪些? 对象分代 垃圾回收器 ...
- linux免安装mysql_linux上免安装版MySQL5.7.18的教程详解
1. 下载mysql 从官网下载mysql的压缩包 mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz 2 把下载的包上传到linux上,先安装下依赖包:Ubun ...
- JVM 详解之 CMS收集器
1.CMS介绍 CMS是一款并发.使用标记-清理(Mark-Sweep)算法的gc,是针对老年代进行回收的GC. Mark-Sweep标记清理算法 阶段1: Mark-Sweep 标记清除阶段,先假设 ...
- JVM发生频繁 CMS GC,罪魁祸首是这个参数!
了解 CMS GC 的同学,一定知道 -XX:CMSScavengeBeforeRemark 参数,它是用来开启或关闭在 CMS-remark 阶段之前的清除(Young GC)尝试. 大家都知道CM ...
- 一个 JVM 参数引发的频繁 CMS GC
了解 CMS GC 的同学,一定知道 -XX:CMSScavengeBeforeRemark 参数,它是用来开启或关闭在 CMS-remark 阶段之前的清除(Young GC)尝试. 大家都知道CM ...
- java gc配置_JVM通用配置 以及GC日志说明
堆空间的常用配置 -Xms -Xmx 设置堆空间的大小 推荐设置成相同 -Xmx8G -Xms8G 可以防止JVM动态调整而消耗性能 -Xss512: 设置每个线程的堆栈大小.JDK5.0以后每个线程 ...
- 使用Nginx在windows和linux上搭建集群
Nginx Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器 特点:反向代理 负载均衡 动静分离- 反向代理(Reverse Pro ...
最新文章
- Umbra 3:次世代的遮挡裁剪
- 进程和线程的基本概念
- Swift 性能相关
- 生信宝典Linux学习系列文章整理
- ubuntu mysql 5.7_Ubuntu 16.04 上安装 MySQL 5.7 教程
- QPainter的使用
- python如何制作一个工程软件_使用python制作一个解压缩软件
- 【verilog教程】第9篇:verilog常见问题合集
- Ubuntu操作系统的学习,从新手到老手的过渡
- 【CQF Finance Class 4 金融衍生品】
- lm1117稳压芯片知识总结
- Shell脚本变量学习_02
- 最详细matlab 2018a安装教程步骤.
- 解决 Flutter 在 iOS 模拟器中运行卡住问题
- 如果把小程序业务和研发管理都放到一个平台
- 腾讯云域名证书哪里下载_备案域名证书获取方法
- 团队-中国象棋游戏-设计文档
- 医院病历的中英文翻译,医生病历本翻译
- 计算机基础职中,职业高中计算机基础试卷一
- 在一个字符串中查找另一个字符串出现的位置