2015-10-12 40 views
1

嗨JVM的配置是:致力于堆VS最大堆

  • XMX = 4096
  • X毫秒= 1024

在我的监视工具:我一直一个坚定的堆在2G和我的服务器会发生OutOfMemory错误。

我不明白为什么我的JVM堆承诺仅限于2G和没有长大到4G(最大堆)

为什么不使用免费堆和我的服务器去OutOfMemory例外?

注:

  • 我的应用程序服务器是的WebSphere 8.5。
  • 我的服务器是Linux 64位。

在此先感谢

+0

什么是确切的OOM错误信息?你可以粘贴'jinfo ' –

回答

0

入住此页 - Using -Xgc:preferredHeapBase with -Xcompressedrefs。你可能会遇到内存不足的错误。

尝试设置下面的标志在JVM参数:

-Xgc:preferredHeapBase=0x100000000 
+0

输出的VM标志部分你是否建议同时使用Xmx和-Xgc:preferredHeapBase? – Nabil

0

虽然设置preferredHeapBase可以解决这个问题,可能有一些其他的原因OOM:

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

还有其他一些原因,但我发现那些在诊断OOM时会有很大的空闲空间。