`
背靠背拥抱
  • 浏览: 889 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

一次诡异的gc

阅读更多
最近在性能和压力测试对gc日志进行监控分析时,出现了诡异的现象:  Yong GC之后 Yong Gen占用空间变大了!

Host环境:
    OS: Linux 2.6.32-358.23.2.el6.x86_64
         CentOS release 6.4 (Final)  

    JVM:
         java version "1.7.0_76"
         Java(TM) SE Runtime Environment (build 1.7.0_76-b13)
         Java HotSpot(TM) 64-Bit Server VM (build 24.76-b04, mixed mode)

    Tomcat JVM OPTIONS:
         -Xms6g -Xmx6g -Xmn4g -Xss256k -XX:SurvivorRatio=6 -XX:PermSize=256m -XX:MaxPermSize=256m -server -XX:MaxTenuringThreshold=15        -XX:+PrintTenuringDistribution -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:+CMSParallelRemarkEnabled -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=80 -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -XX:+HeapDumpOnOutOfMemoryError



   异常的gc日志以及上下文:
         2017-01-23T10:28:07.600+0800: 861788.673: [GC2017-01-23T10:28:07.601+0800: 861788.673: [ParNew
Desired survivor size 268435456 bytes, new threshold 15 (max 15)
- age   1:    7995096 bytes,    7995096 total
- age   2:    1267624 bytes,    9262720 total
- age   3:     159120 bytes,    9421840 total
- age   4:      37384 bytes,    9459224 total
- age   5:      25336 bytes,    9484560 total
- age   6:       2336 bytes,    9486896 total
- age   7:     525656 bytes,   10012552 total
- age   8:       4000 bytes,   10016552 total
- age   9:    1049072 bytes,   11065624 total
- age  10:      95056 bytes,   11160680 total
- age  11:     527344 bytes,   11688024 total
- age  12:       1456 bytes,   11689480 total
- age  13:        936 bytes,   11690416 total
- age  14:        520 bytes,   11690936 total
- age  15:        376 bytes,   11691312 total
: 3159449K->12811K(3670016K), 0.0305460 secs] 3619391K->472754K(5767168K), 0.0312440 secs] [Times: user=0.05 sys=0.00, real=0.03 secs]
2017-01-23T10:29:17.094+0800: 861858.166: [GC2017-01-23T10:29:17.094+0800: 861858.167: [ParNew
Desired survivor size 268435456 bytes, new threshold 15 (max 15)
- age   1:    8014296 bytes,    8014296 total
- age   2:     642016 bytes,    8656312 total
- age   3:    1090696 bytes,    9747008 total
- age   4:      73152 bytes,    9820160 total
- age   5:       4520 bytes,    9824680 total
- age   6:       8456 bytes,    9833136 total
- age   7:       1960 bytes,    9835096 total
- age   8:     525656 bytes,   10360752 total
- age   9:       4000 bytes,   10364752 total
- age  10:    1049072 bytes,   11413824 total
- age  11:      95056 bytes,   11508880 total
- age  12:       3040 bytes,   11511920 total
- age  13:       1456 bytes,   11513376 total
- age  14:        936 bytes,   11514312 total
- age  15:        520 bytes,   11514832 total
: 3158539K->12184K(3670016K), 0.0306850 secs] 3618482K->472126K(5767168K), 0.0311270 secs] [Times: user=0.06 sys=0.00, real=0.03 secs]
2017-01-23T10:29:17.127+0800: 861858.200: [GC2017-01-23T10:29:17.127+0800: 861858.200: [ParNew
Desired survivor size 268435456 bytes, new threshold 15 (max 15)
- age   1:         64 bytes,         64 total
- age   2:    7982688 bytes,    7982752 total
- age   3:     642016 bytes,    8624768 total
- age   4:    1090696 bytes,    9715464 total
- age   5:      73152 bytes,    9788616 total
- age   6:       4520 bytes,    9793136 total
- age   7:       8456 bytes,    9801592 total
- age   8:       1960 bytes,    9803552 total
- age   9:     525656 bytes,   10329208 total
- age  10:       4000 bytes,   10333208 total
- age  11:    1049072 bytes,   11382280 total
- age  12:      95056 bytes,   11477336 total
- age  13:       3040 bytes,   11480376 total
- age  14:       1456 bytes,   11481832 total
- age  15:        936 bytes,   11482768 total
: 12243K->12689K(3670016K), 0.0168980 secs] 472186K->472632K(5767168K), 0.0172270 secs] [Times: user=0.05 sys=0.00, real=0.02 secs]
2017-01-23T10:30:37.850+0800: 861938.923: [GC2017-01-23T10:30:37.851+0800: 861938.923: [ParNew
Desired survivor size 268435456 bytes, new threshold 15 (max 15)
- age   1:   12861952 bytes,   12861952 total
- age   3:     300200 bytes,   13162152 total
- age   4:     108048 bytes,   13270200 total
- age   5:     546992 bytes,   13817192 total
- age   6:      55296 bytes,   13872488 total
- age   7:       4224 bytes,   13876712 total
- age   8:       7896 bytes,   13884608 total
- age   9:       1280 bytes,   13885888 total
- age  10:     525416 bytes,   14411304 total
- age  11:       4000 bytes,   14415304 total
- age  12:    1049072 bytes,   15464376 total
- age  13:      95056 bytes,   15559432 total
- age  14:       3040 bytes,   15562472 total
- age  15:       1456 bytes,   15563928 total
: 3158417K->18166K(3670016K), 0.0274050 secs] 3618360K->478110K(5767168K), 0.0277950 secs] [Times: user=0.06 sys=0.00, real=0.03 secs]
2017-01-23T10:32:01.871+0800: 862022.943: [GC2017-01-23T10:32:01.871+0800: 862022.944: [ParNew
Desired survivor size 268435456 bytes, new threshold 15 (max 15)
- age   1:   15536008 bytes,   15536008 total
- age   2:    2238464 bytes,   17774472 total
- age   4:     103056 bytes,   17877528 total
- age   5:      21992 bytes,   17899520 total
- age   6:     542584 bytes,   18442104 total
- age   7:       3448 bytes,   18445552 total
- age   8:       3848 bytes,   18449400 total
- age   9:       7896 bytes,   18457296 total
- age  10:        512 bytes,   18457808 total
- age  11:     525416 bytes,   18983224 total
- age  12:       4000 bytes,   18987224 total
- age  13:     524768 bytes,   19511992 total
- age  14:      95032 bytes,   19607024 total
- age  15:       3040 bytes,   19610064 total
: 3163894K->20556K(3670016K), 0.0347080 secs] 3623838K->480501K(5767168K), 0.0351120 secs] [Times: user=0.08 sys=0.01, real=0.03 secs]

注意上面的标红部分.


诡异点:
   1. 连着两次 yong gc 间隔极短: 33ms.
         2017-01-23T10:29:17.094+0800: 861858.166:
         2017-01-23T10:29:17.127+0800: 861858.200:
 
   2. Yong 区内存gc 之后占用反而增大!
         : 12243K->12689K(3670016K), 0.0168980 secs]

      而且gc前才占用12MB左右的占用量,Yong 区有3.5G的总大小。说明空闲内存是充足的,应该达不到yong gc 的触发条件。
    
      期间并未发生Old 区的gc (没有cms gc的日志)

      对这条gc数据做个计算:
           12243K->12689K(3670016K), 0.0168980 secs] 472186K->472632K(5767168K)

           Yong Gen: 12689K - 12243K = 446 K , gc后Yong Gen增长了 446K,
           Heap 区增长了: 472632K - 472186K = 446K.

下午与公司一些同事聊了下,都觉得诡异,没有搞清楚原因 。求大牛解析

问题已解决:
结论: jvm bug. 但是官方不再维护CMS GC 了, 有影响的切g1或者parallel。https://bugs.openjdk.java.net/browse/JDK-8048556

分享到:
评论

相关推荐

    一次诡异的full gc查找问题全过程

    在 Java 应用程序中,Full GC 是一种非常 Costly 的垃圾回收操作,它将停止世界(Stop the World)并对整个堆进行垃圾回收。因此,出现 Full GC 问题时,需要快速定位问题原因以避免对系统性能的影响。 在本篇文章...

    GC6153_SERIAL_GC6153

    标题 "GC6153_SERIAL_GC6153" 指向的是一款基于MTK(MediaTek)平台的驱动程序,专为控制SPI接口的GC6153芯片而设计。这款驱动程序的主要功能是确保GC6153芯片在系统中能够正确地被初始化、配置和操作,从而实现其...

    GC2053_1,2.9"GC2053sensor_格科微_GC2053_gc2053datasheet_galaxycore_

    GC2053是格科微电子(GalaxyCore)推出的一款1/2.9英寸的高性能CMOS图像传感器,专为高清成像需求设计。本文将深入探讨GC2053的主要特性和应用。 首先,GC2053传感器的核心规格是其1/2.9"的尺寸,这意味着它拥有...

    SENSOR_GC1054.rar_1054-sensor_SENSOR_GC1054_gc1054

    标题中的"SENSOR_GC1054.rar_1054-sensor_SENSOR_GC1054_gc1054"暗示了我们正在处理一种名为GC1054的传感器,这可能是一款专用于图像处理的传感器。在IT行业中,这类传感器通常被应用于摄像头设备、机器视觉系统或...

    一次完整的JVM GC的流程

    一次完整的JVM GC的流程分析,描述了Full GC的原因入口以及Minor GC

    gcviewer监控gc工具

    GCViewer是一款强大的工具,专用于分析和监控Java应用的垃圾收集(Garbage Collection,简称GC)行为。通过解读GC日志,GCViewer能够帮助开发者识别潜在的内存泄漏、性能瓶颈以及调整优化内存配置。 一、GCViewer...

    GC9300,GC9306,ST7789,HX8357C屏驱动.rar

    "GC9300, GC9306, ST7789, HX8357C屏驱动.rar"是一个压缩包,包含针对不同显示控制器的驱动程序,专为全志平台(Allwinner Platform)设计,该平台广泛应用于各种微控制器(MCU)中。这些驱动程序确保了与显示屏的...

    gc4023 datasheet

    GC4023是一款高性能的CMOS图像传感器,用于capturing高质量图像。该传感器具有1/2.7英寸的感光面积、4Mega像素的高分辨率和低噪音的特点。该传感器的datasheet提供了详细的技术规格和性能指标。 Sensor Overview ...

    gc02m1 datasheet

    GC02M1是一款CMOS图像传感器,具有高分辨率、低噪声和高灵敏度等特点。下面是根据GC02M1 datasheet的内容生成的相关知识点: 1. 传感器概述 GC02M1是一款1/5英寸的CMOS图像传感器,具有200万像素的分辨率。它的主要...

    gc2145 datasheet

    GC2145是一种1/5英寸的UXGA CMOS图像传感器,用于图像采集和处理应用场景。下面是GC2145数据手册的详细解读: Sensor Overview GC2145是一种高性能的CMOS图像传感器,具有高分辨率和高速图像采集能力。该传感器...

    MT65xx_GC032A_Driver_20170614_GC032A_GC032A_Drive

    《MT65xx_GC032A_Driver_20170614_GC032A_GC032A_Drive》是一款专为MT65xx平台设计的GC032A图像传感器驱动程序,它在原有的厂家驱动基础上进行了一些定制化的改进,以优化性能和效果。此驱动程序的更新日期为2017年6...

    MT6261_GC6153_Driver_V0_格科微gc61538w_GC6153_格科微_格科微GC6153@_mt6261

    本文将深入探讨"MT6261_GC6153_Driver_V0"这一驱动程序,它主要用于格科微GC6153模组,该模组是基于QVGA分辨率和SPI接口设计的,具有240*320像素的显示能力。 首先,我们来认识一下主角——格科微GC6153模组。格科...

    STC15W104+GC9106 SPI串口3线驱动彩屏代码.zip_9106_STC15W104驱动oled_gc9106引脚

    总之,STC15W104通过SPI串口3线驱动GC9106彩屏,实现滚动显示功能,涉及到微控制器编程、SPI通信协议、驱动芯片配置以及显示效果的实现等多个方面,是一次综合性较强的嵌入式系统设计实践。通过理解和掌握这些知识点...

    GCviewer-1.35 GC分析工具

    GCviewer是一款强大的Java垃圾收集(Garbage Collection,简称GC)分析工具,版本1.35提供了对Java应用程序内存管理的深度洞察。它可以帮助开发者理解、优化和调试应用程序的内存行为,从而提升性能,避免内存泄漏等...

    gc2355_mipi_raw_摄像头gc2355驱动_

    【标题】"gc2355_mipi_raw_摄像头gc2355驱动_" 指的是一个针对特定型号摄像头GC2355的驱动程序,该驱动是为MT6737处理器平台设计的。在嵌入式系统中,摄像头驱动是连接硬件设备(即摄像头)与操作系统内核之间的重要...

    必须收藏的 速显微GC9002 GC9003 GC9005系列车规级仪表方案

    必须收藏的 速显微GC9002 GC9003 GC9005系列车规级仪表方案

    GC5025.tar.gz_RK camera_camera_gc5025 RK3368_gc5025驱动_rk摄像头驱动

    在"GC5025.tar.gz"压缩包中,包含了针对RK3368平台的GC5025摄像头驱动代码,这是一组关键的源文件和配置文件,它们负责初始化、配置和控制摄像头硬件。驱动代码通常包括初始化函数、设备操作函数、中断处理函数等,...

    RGW 的GC深入解析与调优

    4. rgw_gc_processor_period 这个控制多久时长以后 GCworker 开始下一轮的 GC 操作,如果单次 GC 需要操作的列表条目数较少,可以适当缩短这个时长。 GC 是 RGW 中的一种重要机制,可以有效地释放无用的对象占用的...

    GC4663 DATASHEET

    - 介绍了一次性编程存储器(OTP)的使用,其可用于存储校准参数等重要信息。 10.10 帧结构(Frame structure): - 详细说明了GC4663输出图像的帧结构,包括每个帧的组成部分。 11. 寄存器列表(Register List):...

Global site tag (gtag.js) - Google Analytics