已提交堆与最大堆

时间:2015-10-12 22:21:41

标签: java jvm websphere

您好JVM配置是:

  • Xmx = 4096
  • Xms = 1024

在我的监控工具中:我总是以2g提交堆,而我的服务器转到OutOfMemory错误。

我不明白为什么我的JVM承诺堆限制为2g并且没有长到4g(最大堆)

为什么不使用空闲堆并且我的服务器转到OutOfMemory异常?

NB:

  • 我的应用服务器是websphere 8.5。
  • 我的服务器是Linux 64位。

提前致谢

2 个答案:

答案 0 :(得分:1)

虽然设置preferredHeapBase可能会解决问题,但OOM可能还有其他一些原因:

  • 无法满足非常大的内存请求 - 请检查 在OOM时间戳之前的verboseGC输出。
  • 用户限制不足 Insufficient ulimit -u (NPROC) Value Contributes to Native OutOfMemory。检查用户限制。
  • 应用程序对超过4GB本机内存的要求。 在这种情况下,-Xnocompressedrefs将解决问题(但使用 更大的Java内存占用和性能影响)。

还有其他原因,但是当有足够的Java堆空间可用时诊断OOM时,我发现这些是最热门的。

答案 1 :(得分:0)

查看此页面 - Using -Xgc:preferredHeapBase with -Xcompressedrefs。您可能会遇到本机内存不足错误。

尝试在JVM参数中设置以下标志:

-Xgc:preferredHeapBase=0x100000000