gc log

两次full gc 均是Metadata GC导致,

OpenJDK 64-Bit Server VM (25.151-b12) for linux-amd64 JRE (1.8.0_151-b12), built on Oct 20 2017 13:44:55 by "mockbuild" with gcc 4.8.5 20150623 (Red Hat 4.8.5-16)
Memory: 4k page, physical 32768212k(24960168k free), swap 16777212k(16777212k free)
CommandLine flags: -XX:InitialHeapSize=4294967296 -XX:MaxHeapSize=4294967296 -XX:MaxNewSize=1415577600 -XX:NewSize=1415577600 -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:SurvivorRatio=6 -XX:-UseAdaptiveSizePolicy -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC
3.239: [GC (Metadata GC Threshold) [PSYoungGen: 580899K->44848K(1209856K)] 580899K->44936K(4021760K), 0.0709512 secs] [Times: user=0.28 sys=0.05, real=0.07 secs]
3.310: [Full GC (Metadata GC Threshold) [PSYoungGen: 44848K->0K(1209856K)] [ParOldGen: 88K->42742K(2811904K)] 44936K->42742K(4021760K), [Metaspace: 20807K->20807K(1069056K)], 0.0687655 secs] [Times: user=0.53 sys=0.06, real=0.07 secs]
4.877: [GC (Metadata GC Threshold) [PSYoungGen: 295888K->14853K(1209856K)] 338631K->57604K(4021760K), 0.0168992 secs] [Times: user=0.10 sys=0.04, real=0.01 secs]
4.894: [Full GC (Metadata GC Threshold) [PSYoungGen: 14853K->0K(1209856K)] [ParOldGen: 42750K->19141K(2811904K)] 57604K->19141K(4021760K), [Metaspace: 34824K->34824K(1081344K)], 0.0531168 secs] [Times: user=0.39 sys=0.02, real=0.06 secs]
176.369: [GC (Allocation Failure) [PSYoungGen: 1037312K->21557K(1209856K)] 1056453K->40706K(4021760K), 0.0291270 secs] [Times: user=0.21 sys=0.01, real=0.03 secs]
179.483: [GC (Allocation Failure) [PSYoungGen: 1058869K->34528K(1209856K)] 1078018K->53685K(4021760K), 0.0485665 secs] [Times: user=0.16 sys=0.13, real=0.05 secs]
182.920: [GC (Allocation Failure) [PSYoungGen: 1071840K->47968K(1209856K)] 1090997K->67125K(4021760K), 0.0436580 secs] [Times: user=0.22 sys=0.00, real=0.04 secs]
186.455: [GC (Allocation Failure) [PSYoungGen: 1085280K->62016K(1209856K)] 1104437K->81181K(4021760K), 0.0642786 secs] [Times: user=0.25 sys=0.23, real=0.07 secs]
190.285: [GC (Allocation Failure) [PSYoungGen: 1099328K->77280K(1209856K)] 1118493K->96445K(4021760K), 0.0695328 secs] [Times: user=0.35 sys=0.21, real=0.07 secs]

加上 Metadata的配置参数: -XX:MetaspaceSize=128M

附上 metadata的配置说明

从JDK8开始,永久代(PermGen)的概念被废弃掉了,取而代之的是一个称为Metaspace的存储空间。Metaspace使用的是本地内存,而不是堆内存,也就是说在默认情况下Metaspace的大小只与本地内存大小有关。当然你也可以通过以下的几个参数对Metaspace进行控制:

* -XX:MetaspaceSize=N * 
这个参数是初始化的Metaspace大小,该值越大触发Metaspace GC的时机就越晚。随着GC的到来,虚拟机会根据实际情况调控Metaspace的大小,可能增加上线也可能降低。在默认情况下,这个值大小根据不同的平台在12M到20M浮动。使用java -XX:+PrintFlagsInitial命令查看本机的初始化参数,-XX:Metaspacesize21810376B(大约20.8M)。

-XX:MaxMetaspaceSize=N 
这个参数用于限制Metaspace增长的上限,防止因为某些情况导致Metaspace无限的使用本地内存,影响到其他程序。在本机上该参数的默认值为4294967295B(大约4096MB)。

-XX:MinMetaspaceFreeRatio=N 
当进行过Metaspace GC之后,会计算当前Metaspace的空闲空间比,如果空闲比小于这个参数,那么虚拟机将增长Metaspace的大小。在本机该参数的默认值为40,也就是40%。设置该参数可以控制Metaspace的增长的速度,太小的值会导致Metaspace增长的缓慢,Metaspace的使用逐渐趋于饱和,可能会影响之后类的加载。而太大的值会导致Metaspace增长的过快,浪费内存。

-XX:MaxMetasaceFreeRatio=N 
当进行过Metaspace GC之后, 会计算当前Metaspace的空闲空间比,如果空闲比大于这个参数,那么虚拟机会释放Metaspace的部分空间。在本机该参数的默认值为70,也就是70%。

-XX:MaxMetaspaceExpansion=N 
Metaspace增长时的最大幅度。在本机上该参数的默认值为5452592B(大约为5MB)。

-XX:MinMetaspaceExpansion=N 
Metaspace增长时的最小幅度。在本机上该参数的默认值为340784B(大约330KB为)。

Metadata GC Threshold导致的full gc分析相关推荐

  1. 频繁GC (Allocation Failure)及young gc时间过长分析

    序 本文主要分析一个频繁GC (Allocation Failure)及young gc时间过长的case. 症状 gc throughput percent逐步下降,从一般的99.96%逐步下降,跌 ...

  2. 求求你了,配个GC日志呗,不然咋分析故障原因

    点击关注公众号,Java干货及时送达 生产环境上,或者其他要测试 GC 问题的环境上,一定会配置上打印GC日志的参数,便于分析 GC 相关的问题. 但是可能很多人配置的都不够"完美" ...

  3. 如何查看yarn container日志 查看yarn任务所有container信息 yarn gc日志的查看和简单分析

    查看yarn任务日志 任务运行中和结束时查看container的日志 GC日志的简单分析 文章目录 一.shell和yarn基础命令准备 二.app日志查看 1. 直接使用yarn logs,可选择指 ...

  4. GC分类、TLAB、逃逸分析、栈上分配、同步消除、标量替换

    GC分类 JVM的调优的一个环节,也就是垃圾收集,我们需要尽量的避免垃圾回收,因为在垃圾回收的过程中,容易出现STW(Stop the World)的问题,而 Major GC 和 Full GC出现 ...

  5. GC 疑难情况问题排查与分析(上篇)

    本章介绍导致 GC 性能问题的典型情况.相关示例都来源于生产环境,为演示需要做了一定程度的精简. 名词说明:Allocation Rate,翻译为"分配速率",而不是分配率.因为不 ...

  6. GC暂停时间过长——排查分析

    告警 本次GC日志分析 2022-11-17T17:58:50.518+0800: 1217960.132: [GC (Allocation Failure) 2022-11-17T17:58:50. ...

  7. GC 调优(实战篇) - GC参考手册

    说明: Allocation Rate, 翻译为分配速率, 而不是分配率; 因为不是百分比,而是单位时间内分配的量; 同理, Promotion Rate 翻译为 提升速率; 您应该已经阅读了前面的章 ...

  8. 0 full gc时cpu idle_结合GC日志讲讲CMS垃圾收集器

    1 CMS垃圾收集器介绍 CMS(Concurrent Mark Sweep)收集器旨在获取最短回收停顿时间的并发垃圾收集器.CMS基于"标记-清除"算法实现,并发指的是CMS的垃 ...

  9. 7. GC 调优(实战篇) - GC参考手册

    本章介绍导致GC性能问题的典型情况.相关示例都来源于生产环境, 为演示需要做了一定程度的精简. 说明: Allocation Rate, 翻译为分配速率, 而不是分配率; 因为不是百分比,而是单位时间 ...

最新文章

  1. 从中心走向边缘——深度解析云原生边缘计算落地痛点
  2. 3D 鼠标跟随脚本详解
  3. Java 11新特性_java 11 值得关注的新特性
  4. linux下如何挂载格式化内存卡,Linux下磁盘挂载格式化
  5. 天寒宜早睡,梦醒闻雪声,倒计时83
  6. 用CocoaPods安装ReactiveCocoa遇到的问题
  7. leetcode[35]搜索插入位置/Search Insert Position 暴力和二分法详解
  8. 用 Handler 给图片加水印
  9. 空对地(air-to-ground,A2G)通信发展概况与面临挑战
  10. python设计模式之MVC
  11. 如何与亦敌亦友的 null 说拜拜?大神原来是这么做的!
  12. Oracle中对时间操作的一些总结
  13. 曾维沛全网营销推广如何做?微商精准引流,让客户主动找上门
  14. 什么是GPU服务器?如何正确选择?
  15. 局域网唤醒 外网无法唤醒_为您的网络设置局域网唤醒控制面板
  16. 基因编辑c语言,基因编辑为何失败?那是因为Cas9霸着C位
  17. 氚云CRM管理员手册
  18. 工程师评测 | RK3568开发板上手测试
  19. 【题解】CH5202 自然数拆分Lunatic版 完全背包
  20. php计算根据出生日期计算年龄

热门文章

  1. 带你从源码角度分析ViewGroup中事件分发流程
  2. 第四周项目一-求两个数的最大公约数
  3. 微信翻译生日快乐的代码_微信翻译出 Bug 上热搜,程序员又背锅?!
  4. UIGestureRecognizer手势介绍
  5. ORM-Dapper:Dapper百科
  6. [CSU1911]Card Game
  7. LUOGU P2764 最小路径覆盖问题 (最小路径点覆盖)
  8. python学习之if条件句的使用
  9. Centos7 安装Mini后相关配置
  10. 关于 OneAPM Cloud Test DNS 监控的几个重要问题