最近在性能和压力测试对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
分享到:
相关推荐
在 Java 应用程序中,Full GC 是一种非常 Costly 的垃圾回收操作,它将停止世界(Stop the World)并对整个堆进行垃圾回收。因此,出现 Full GC 问题时,需要快速定位问题原因以避免对系统性能的影响。 在本篇文章...
标题 "GC6153_SERIAL_GC6153" 指向的是一款基于MTK(MediaTek)平台的驱动程序,专为控制SPI接口的GC6153芯片而设计。这款驱动程序的主要功能是确保GC6153芯片在系统中能够正确地被初始化、配置和操作,从而实现其...
GC2053是格科微电子(GalaxyCore)推出的一款1/2.9英寸的高性能CMOS图像传感器,专为高清成像需求设计。本文将深入探讨GC2053的主要特性和应用。 首先,GC2053传感器的核心规格是其1/2.9"的尺寸,这意味着它拥有...
标题中的"SENSOR_GC1054.rar_1054-sensor_SENSOR_GC1054_gc1054"暗示了我们正在处理一种名为GC1054的传感器,这可能是一款专用于图像处理的传感器。在IT行业中,这类传感器通常被应用于摄像头设备、机器视觉系统或...
一次完整的JVM GC的流程分析,描述了Full GC的原因入口以及Minor GC
GCViewer是一款强大的工具,专用于分析和监控Java应用的垃圾收集(Garbage Collection,简称GC)行为。通过解读GC日志,GCViewer能够帮助开发者识别潜在的内存泄漏、性能瓶颈以及调整优化内存配置。 一、GCViewer...
"GC9300, GC9306, ST7789, HX8357C屏驱动.rar"是一个压缩包,包含针对不同显示控制器的驱动程序,专为全志平台(Allwinner Platform)设计,该平台广泛应用于各种微控制器(MCU)中。这些驱动程序确保了与显示屏的...
GC4023是一款高性能的CMOS图像传感器,用于capturing高质量图像。该传感器具有1/2.7英寸的感光面积、4Mega像素的高分辨率和低噪音的特点。该传感器的datasheet提供了详细的技术规格和性能指标。 Sensor Overview ...
GC02M1是一款CMOS图像传感器,具有高分辨率、低噪声和高灵敏度等特点。下面是根据GC02M1 datasheet的内容生成的相关知识点: 1. 传感器概述 GC02M1是一款1/5英寸的CMOS图像传感器,具有200万像素的分辨率。它的主要...
GC2145是一种1/5英寸的UXGA CMOS图像传感器,用于图像采集和处理应用场景。下面是GC2145数据手册的详细解读: Sensor Overview GC2145是一种高性能的CMOS图像传感器,具有高分辨率和高速图像采集能力。该传感器...
《MT65xx_GC032A_Driver_20170614_GC032A_GC032A_Drive》是一款专为MT65xx平台设计的GC032A图像传感器驱动程序,它在原有的厂家驱动基础上进行了一些定制化的改进,以优化性能和效果。此驱动程序的更新日期为2017年6...
本文将深入探讨"MT6261_GC6153_Driver_V0"这一驱动程序,它主要用于格科微GC6153模组,该模组是基于QVGA分辨率和SPI接口设计的,具有240*320像素的显示能力。 首先,我们来认识一下主角——格科微GC6153模组。格科...
总之,STC15W104通过SPI串口3线驱动GC9106彩屏,实现滚动显示功能,涉及到微控制器编程、SPI通信协议、驱动芯片配置以及显示效果的实现等多个方面,是一次综合性较强的嵌入式系统设计实践。通过理解和掌握这些知识点...
GCviewer是一款强大的Java垃圾收集(Garbage Collection,简称GC)分析工具,版本1.35提供了对Java应用程序内存管理的深度洞察。它可以帮助开发者理解、优化和调试应用程序的内存行为,从而提升性能,避免内存泄漏等...
【标题】"gc2355_mipi_raw_摄像头gc2355驱动_" 指的是一个针对特定型号摄像头GC2355的驱动程序,该驱动是为MT6737处理器平台设计的。在嵌入式系统中,摄像头驱动是连接硬件设备(即摄像头)与操作系统内核之间的重要...
必须收藏的 速显微GC9002 GC9003 GC9005系列车规级仪表方案
在"GC5025.tar.gz"压缩包中,包含了针对RK3368平台的GC5025摄像头驱动代码,这是一组关键的源文件和配置文件,它们负责初始化、配置和控制摄像头硬件。驱动代码通常包括初始化函数、设备操作函数、中断处理函数等,...
4. rgw_gc_processor_period 这个控制多久时长以后 GCworker 开始下一轮的 GC 操作,如果单次 GC 需要操作的列表条目数较少,可以适当缩短这个时长。 GC 是 RGW 中的一种重要机制,可以有效地释放无用的对象占用的...
- 介绍了一次性编程存储器(OTP)的使用,其可用于存储校准参数等重要信息。 10.10 帧结构(Frame structure): - 详细说明了GC4663输出图像的帧结构,包括每个帧的组成部分。 11. 寄存器列表(Register List):...