【问题标题】:What is the reason survivor spaces get full 100%幸存者空间达到 100% 的原因是什么
【发布时间】:2015-04-24 23:39:36
【问题描述】:

我们的服务器应用程序似乎在一段时间内正常运行,但一段时间后,幸存者空间填充到 100%,从那时起堆使用量增加,GC 周期(次要和主要)变得越来越频繁最终堆耗尽。

这是 'jstat -gcutil 1000' 输出的一部分:

  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
100.00   0.00  99.17  48.34  59.93   7014 11777.197   345  554.945 12332.143
100.00   0.00  99.17  48.34  59.93   7014 11777.197   345  554.945 12332.143
100.00   0.00  99.17  48.34  59.93   7014 11777.197   345  554.945 12332.143
100.00   0.00  99.17  48.34  59.93   7014 11777.197   345  554.945 12332.143
100.00   6.02 100.00  48.55  59.93   7015 11777.197   345  554.945 12332.143
  0.00 100.00   1.30  50.43  59.93   7015 11778.699   345  554.945 12333.644
  0.00 100.00  10.74  50.43  59.93   7015 11778.699   345  554.945 12333.644
  0.00 100.00  19.16  50.43  59.93   7015 11778.699   345  554.945 12333.644
  0.00 100.00  27.72  50.43  59.93   7015 11778.699   345  554.945 12333.644
  0.00 100.00  37.43  50.43  59.93   7015 11778.699   345  554.945 12333.644
  0.00 100.00  45.76  50.43  59.93   7015 11778.699   345  554.945 12333.644
  0.00 100.00  55.35  50.43  59.93   7015 11778.699   345  554.945 12333.644
  0.00 100.00  63.05  50.43  59.93   7015 11778.699   345  554.945 12333.644
  0.00 100.00  72.27  50.43  59.93   7015 11778.699   345  554.945 12333.644
  0.00 100.00  81.21  50.43  59.93   7015 11778.699   345  554.945 12333.644
  0.00 100.00  90.46  50.43  59.93   7015 11778.699   345  554.945 12333.644
  0.00 100.00 100.00  50.43  59.93   7016 11778.699   345  554.945 12333.644
 80.16 100.00 100.00  50.53  59.93   7016 11778.699   345  554.945 12333.644
100.00   0.00   5.96  51.79  59.93   7016 11780.080   345  554.945 12335.026
100.00   0.00   7.73  51.79  59.93   7016 11780.080   345  554.945 12335.026
100.00   0.00   7.73  51.79  59.93   7016 11780.080   345  554.945 12335.026
100.00   0.00   7.73  51.79  59.93   7016 11780.080   345  554.945 12335.026

我的问题是这种应用程序行为背后的主要原因是什么?是年轻空间或堆太小,还是其他一些 JVM 参数,还是只是普通的旧内存泄漏?

解决此问题的最佳策略是什么,GC 调优或应用程序重构?

JDK 1.6、HP-UX、Xmx/Xms 1G、Xmn 264M、+UseConcMarkSweepGC、+UseParNewGC

非常感谢

【问题讨论】:

  • 我们在短时间内创建了太多对象吗?
  • 是的,但这就是应用程序正在做的事情。让我感到困惑的是,一开始(而应用程序的负载几乎是恒定的),分配率根本没有那么高。
  • 是否总是在相同的时间后、一天中的同一时间或某些应用程序事件后开始发生?
  • 它发生在应用处理了大致相同的交易量之后,这与时间的吻合度更低。

标签: java memory-leaks garbage-collection


【解决方案1】:

普通的旧内存泄漏,我会先搜索您使用的任何库是否已经泄漏。

是否有任何批处理作业被激活?

【讨论】:

  • 无批处理作业,工作时间内负载或多或少均匀分布。
猜你喜欢
  • 2016-02-05
  • 1970-01-01
  • 2013-01-04
  • 1970-01-01
  • 2018-05-10
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 2015-07-07
相关资源
最近更新 更多