Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 每次CMS工作时都会发生FullGC_Java_Performance_Garbage Collection - Fatal编程技术网

Java 每次CMS工作时都会发生FullGC

Java 每次CMS工作时都会发生FullGC,java,performance,garbage-collection,Java,Performance,Garbage Collection,我有一个实时web应用程序,每秒大约有100-1000个请求。我使用CMS GC,每次CMS开始工作时,FGC计数器增加2。为什么每次都发生FullGC?我的意思是CMS必须在没有FullGC的情况下工作。还是这是正常的行为? 我的JMV选项: -Xms6g -Xmx6g -XX:PermSize=512m -XX:MaxPermSize=512m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSInitiatingOccupanc

我有一个实时web应用程序,每秒大约有100-1000个请求。我使用CMS GC,每次CMS开始工作时,FGC计数器增加2。为什么每次都发生FullGC?我的意思是CMS必须在没有FullGC的情况下工作。还是这是正常的行为? 我的JMV选项:

-Xms6g
-Xmx6g
-XX:PermSize=512m 
-XX:MaxPermSize=512m 
-XX:+UseParNewGC 
-XX:+UseConcMarkSweepGC 
-XX:+UseCMSInitiatingOccupancyOnly 
-XX:CMSInitiatingOccupancyFraction=70 
-XX:+CMSClassUnloadingEnabled 
-XX:+UseLargePages 
-XX:LargePageSizeInBytes=2m 
-verbose:gc 
-Xloggc:gc.log 
-XX:+PrintGCDetails 
-XX:+PrintGCDateStamps
-Dsun.rmi.dgc.client.gcInterval=3600000 
-Dsun.rmi.dgc.server.gcInterval=3600000
下面是gc.log:

2013-08-19T10:21:33.072+0600: 123570.236: [GC 123570.237: [ParNew: 427534K->35446K(440896K), 0.1872440 secs] 4482285K->4091194K(6242496K), 0.1877660 secs] [Times: user=0.51 sys=0.01, real=0.19 secs]
2013-08-19T10:21:34.026+0600: 123571.191: [GC 123571.191: [ParNew: 427382K->34355K(440896K), 0.1993550 secs] 4483130K->4090615K(6242496K), 0.1998720 secs] [Times: user=0.53 sys=0.00, real=0.20 secs]
2013-08-19T10:21:34.724+0600: 123571.889: [GC 123571.889: [ParNew: 426291K->38786K(440896K), 0.2229880 secs] 4482551K->4095384K(6242496K), 0.2235130 secs] [Times: user=0.53 sys=0.00, real=0.23 secs]
2013-08-19T10:21:35.579+0600: 123572.744: [GC 123572.744: [ParNew: 430722K->34694K(440896K), 0.1812580 secs] 4487320K->4091801K(6242496K), 0.1817630 secs] [Times: user=0.49 sys=0.00, real=0.18 secs]
2013-08-19T10:21:36.429+0600: 123573.594: [GC 123573.594: [ParNew: 426630K->34091K(440896K), 0.1752240 secs] 4483737K->4092028K(6242496K), 0.1757390 secs] [Times: user=0.48 sys=0.00, real=0.17 secs]
2013-08-19T10:21:37.221+0600: 123574.386: [GC 123574.386: [ParNew: 426027K->36411K(440896K), 0.2047550 secs] 4483964K->4095856K(6242496K), 0.2052280 secs] [Times: user=0.50 sys=0.00, real=0.21 secs]
2013-08-19T10:21:38.059+0600: 123575.223: [GC 123575.223: [ParNew: 428347K->40113K(440896K), 0.1892000 secs] 4487792K->4100213K(6242496K), 0.1896180 secs] [Times: user=0.51 sys=0.01, real=0.19 secs]
2013-08-19T10:21:38.593+0600: 123575.757: [GC 123575.757: [ParNew: 432049K->39917K(440896K), 0.2193730 secs] 4492149K->4101831K(6242496K), 0.2198480 secs] [Times: user=0.50 sys=0.00, real=0.22 secs]
2013-08-19T10:21:38.817+0600: 123575.981: [GC [1 CMS-initial-mark: 4061914K(5801600K)] 4102165K(6242496K), 0.0901990 secs] [Times: user=0.09 sys=0.00, real=0.09 secs]
2013-08-19T10:21:38.908+0600: 123576.072: [CMS-concurrent-mark-start]
2013-08-19T10:21:39.305+0600: 123576.469: [CMS-concurrent-mark: 0.397/0.397 secs] [Times: user=4.16 sys=0.44, real=0.39 secs]
2013-08-19T10:21:39.305+0600: 123576.469: [CMS-concurrent-preclean-start]
2013-08-19T10:21:39.335+0600: 123576.499: [GC 123576.499: [ParNew: 431853K->39752K(440896K), 0.2246840 secs] 4493767K->4102434K(6242496K), 0.2251970 secs] [Times: user=0.54 sys=0.00, real=0.23 secs]
2013-08-19T10:21:39.576+0600: 123576.741: [CMS-concurrent-preclean: 0.039/0.271 secs] [Times: user=0.75 sys=0.05, real=0.27 secs]
2013-08-19T10:21:39.576+0600: 123576.741: [CMS-concurrent-abortable-preclean-start]
2013-08-19T10:21:40.193+0600: 123577.357: [GC 123577.358: [ParNew: 431688K->39319K(440896K), 0.2158020 secs] 4494370K->4102833K(6242496K), 0.2162640 secs] [Times: user=0.53 sys=0.00, real=0.22 secs]
2013-08-19T10:21:40.474+0600: 123577.638: [CMS-concurrent-abortable-preclean: 0.673/0.898 secs] [Times: user=3.19 sys=0.77, real=0.90 secs]
2013-08-19T10:21:40.479+0600: 123577.643: [GC[YG occupancy: 202771 K (440896 K)]123577.643: [Rescan (parallel) , 0.0455840 secs]123577.689: [weak refs processing, 2.2041640 secs]123579.893: [class unloading, 0.0445080 secs]123579.938: [scrub symbol & string tables, 0.0187100 secs] [1 CMS-remark: 4063513K(5801600K)] 4266284K(6242496K), 2.3260510 secs] [Times: user=3.24 sys=0.00, real=2.32 secs]
2013-08-19T10:21:42.806+0600: 123579.970: [CMS-concurrent-sweep-start]
2013-08-19T10:21:42.914+0600: 123580.079: [GC 123580.079: [ParNew: 431328K->45397K(440896K), 0.0902990 secs] 4494842K->4109425K(6242496K), 0.0908150 secs] [Times: user=0.50 sys=0.00, real=0.09 secs]
2013-08-19T10:21:43.012+0600: 123580.176: [GC 123580.176: [ParNew: 45767K->4894K(440896K), 0.1271260 secs] 4109795K->4114786K(6242496K), 0.1275320 secs] [Times: user=0.75 sys=0.04, real=0.13 secs]
2013-08-19T10:21:43.286+0600: 123580.451: [GC 123580.451: [ParNew: 396847K->48960K(440896K), 0.2152650 secs] 4506739K->4161825K(6242496K), 0.2157500 secs] [Times: user=0.59 sys=0.00, real=0.22 secs]
2013-08-19T10:21:43.509+0600: 123580.673: [GC 123580.674: [ParNew: 49831K->8172K(440896K), 0.0639450 secs] 4162696K->4159717K(6242496K), 0.0643790 secs] [Times: user=0.48 sys=0.00, real=0.06 secs]
2013-08-19T10:21:43.726+0600: 123580.890: [GC 123580.890: [ParNew: 400108K->48960K(440896K), 0.1256470 secs] 4551616K->4203961K(6242496K), 0.1261110 secs] [Times: user=0.50 sys=0.00, real=0.13 secs]
2013-08-19T10:21:43.999+0600: 123581.164: [GC 123581.164: [ParNew: 440896K->48960K(440896K), 0.1631010 secs] 4565558K->4184975K(6242496K), 0.1635960 secs] [Times: user=0.58 sys=0.01, real=0.16 secs]
2013-08-19T10:21:44.715+0600: 123581.880: [GC 123581.880: [ParNew: 440896K->39265K(440896K), 0.2020150 secs] 4374009K->3975902K(6242496K), 0.2025700 secs] [Times: user=0.53 sys=0.00, real=0.21 secs]
2013-08-19T10:21:44.924+0600: 123582.088: [GC 123582.088: [ParNew: 39857K->1876K(440896K), 0.0546600 secs] 3976335K->3973247K(6242496K), 0.0550670 secs] [Times: user=0.46 sys=0.02, real=0.06 secs]
2013-08-19T10:21:45.207+0600: 123582.371: [GC 123582.371: [ParNew: 393812K->42887K(440896K), 0.2367970 secs] 4280052K->3929127K(6242496K), 0.2372620 secs] [Times: user=0.57 sys=0.00, real=0.24 secs]
2013-08-19T10:21:46.048+0600: 123583.212: [GC 123583.213: [ParNew: 434823K->33908K(440896K), 0.1922750 secs] 4081263K->3683497K(6242496K), 0.1927880 secs] [Times: user=0.54 sys=0.00, real=0.19 secs]
以下是jstat日志:

70.86   0.00  63.36  69.93  29.29   7110 1077.048    42  112.603 1189.651 unknown GCCause      No GC
  0.00  69.63  84.75  69.95  29.29   7111 1077.223    42  112.603 1189.826 unknown GCCause      No GC
 74.37  20.57 100.00  69.98  29.29   7113 1077.428    42  112.603 1190.031 unknown GCCause      Allocation Failure
  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC
 81.53   0.00  80.03  70.01  29.29   7114 1077.837    43  112.693 1190.530 CMS Initial Mark     No GC
  0.00  81.19  92.05  70.03  29.29   7115 1078.061    43  112.693 1190.754 unknown GCCause      No GC
 80.31   0.00  41.70  70.04  29.29   7116 1078.277    44  112.693 1190.970 No GC                CMS Final Remark
 80.31   0.00  41.70  70.04  29.29   7116 1078.277    44  112.693 1190.970 No GC                CMS Final Remark
 10.00  92.72   0.09  70.85  29.30   7118 1078.368    44  115.019 1193.386 No GC                GCLocker Initiated GC
  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC
 86.43 100.00 100.00  71.26  29.30   7122 1078.900    44  115.019 1193.918 unknown GCCause      Allocation Failure
  3.83   0.00  96.82  67.37  29.30   7124 1079.319    44  115.019 1194.338 GCLocker Initiated GC No GC
 10.70  87.60 100.00  62.91  29.30   7126 1079.556    44  115.019 1194.575 unknown GCCause      Allocation Failure
 69.26  46.82 100.00  58.81  29.30   7127 1079.748    44  115.019 1194.767 unknown GCCause      Allocation Failure
  0.00   2.97   0.00  54.59  29.30   7129 1080.196    44  115.019 1195.215 GCLocker Initiated GC No GC
  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC
 77.12   0.00  72.64  46.93  29.30   7130 1080.391    44  115.019 1195.410 unknown GCCause      No GC
  1.21   0.00  92.31  40.78  29.30   7132 1080.656    44  115.019 1195.675 GCLocker Initiated GC No GC
 70.43   0.00   0.14  33.51  29.30   7134 1080.874    44  115.019 1195.893 unknown GCCause      No GC
  0.00  62.56  33.67  25.89  29.30   7135 1080.974    44  115.019 1195.992 unknown GCCause      No GC
 71.90   0.00  85.91  23.61  29.30   7136 1081.153    44  115.019 1196.172 unknown GCCause      No GC
  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC
 35.00  87.41 100.00  23.66  29.30   7138 1081.349    44  115.019 1196.368 unknown GCCause      Allocation Failure
  0.00  79.22  68.07  23.69  29.30   7139 1081.671    44  115.019 1196.690 unknown GCCause      No GC
 87.27   0.00  93.23  23.70  29.30   7140 1081.878    44  115.019 1196.897 unknown GCCause      No GC
  0.00  65.85  68.58  23.73  29.30   7141 1082.028    44  115.019 1197.047 unknown GCCause      No GC
 37.82   0.00  22.79  23.75  29.30   7142 1082.097    44  115.019 1197.116 unknown GCCause      No GC
  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC
  0.00  65.38  91.55  23.75  29.30   7143 1082.223    44  115.019 1197.242 unknown GCCause      No GC
  5.66  97.48 100.00  23.80  29.30   7146 1082.490    44  115.019 1197.509 unknown GCCause      Allocation Failure
 91.30   0.00  93.29  24.44  29.30   7148 1082.807    44  115.019 1197.826 unknown GCCause      No GC
 64.91  76.26 100.00  24.48  29.30   7150 1082.925    44  115.019 1197.944 unknown GCCause      Allocation Failure
  0.00  75.64  43.14  24.51  29.30   7151 1083.267    44  115.019 1198.286 unknown GCCause      No GC

尝试使用以下JVM参数来获取详细的GC日志,我们可以对此进行进一步研究

-XX:+PrintPromotionFailure To get more details about promotion failures
-XX:PrintFLSStatistics=1  To get more details about young and old generation statistics

主要问题是:你提到的“FullGC”计数器计算的是什么

1.)CMS是一个完整的集合,因为它收集了年轻一代和老一代

2.)每次CMS运行将包括两个停止世界阶段(初始标记和备注),而所有其他工作同时进行。CMS并不试图阻止停止世界阶段,它只是尽可能地缩短它们

3.)当虚拟机内存不足,同时CMS的并发阶段处于活动状态时,它将返回到正常的标记扫描压缩算法,这将导致长时间停止世界暂停

检查您的GC日志,我看不到任何正在发生的提示。当检查jstat日志时,您可以看到FGC计数器在“CMS初始标记”和“CMS最终备注”上增加,因此似乎只计算CMS集合中正常部分的两个停止世界阶段。

CMS确实使用完整的GCs

所有垃圾收集器都执行次要GC或完全GC。次要GCs将收集年轻一代,而完整GCs将收集年轻一代、老年一代和烫发一代

在CMS上,您得到的只是一个旧一代的吞吐量收集器,这意味着该收集器将尝试避免大的停止世界暂停。它有不同的阶段,如您在日志中看到的,我不会详细介绍CMS阶段,但您需要知道,当您的旧一代无法分配终身对象时,保证进行完整的收集。因此,CMS确实执行FULLGCs


由于您对jstat日志的怀疑,CMS上的FullGC将始终以2的增量增加FullGC度量,但只发生了一次FullGC。(我很久以前在官方jstat文档上读过这篇文章,但现在找不到它,但有一次我和你一样有疑问,我已经在多个JVM和站点上亲自验证了这一点)。

你的意思是没有发生完全GC。所以当使用CMS时,jstat FGC列不显示FullGC计数?我的意思是FGC在世界级的每一站都会增加。对吗?这就是我从你的jstat日志中读到的。由RMI设置触发的FullGCs是否也会增加FGC,这将是一个有趣的时刻。我刚刚为FullGC做了grepgc.log,发现FullGC每小时都会发生一次。我猜这两个选项调用FullGC:-Dsun.rmi.dgc.client.gcInterval=3600000-Dsun.rmi.dgc.server.gcInterval=3600000。平均时间为2.50秒是的,这些参数将定期触发GC,经过一些阅读,我了解到这些参数将始终停止世界收藏,即使其他老一代收藏将使用CMS。