调整直接缓冲内存的大小

Resizing Direct Buffer Memory

我在 Websphere 8.5 上有一个应用程序 运行,我知道这个特定 JVM 的堆内存大小在过去有所增加。 提交的内存现在是 5.6GB,但我们遇到了与直接缓冲内存相关的内存问题,现在我们也需要调整它的大小。我通过监控可以看到这个问题的发生,所以我看不到直接内存的大小。

我的问题是:根据 Java 堆内存大小是否有正确的直接内存大小?比方说,每 X GB 至少 X MB。

XX:MaxDirectMemorySize 选项的默认值是多少?

在更改此选项之前我还应该考虑什么?

根据 Oracle 文档

http://docs.oracle.com/cd/E15289_01/doc.40/e15062/optionxx.htm#BABGCFFB

默认没有限制

根据 IBM 文档

https://www.ibm.com/support/knowledgecenter/SSYKE2_7.0.0/com.ibm.java.win.70.doc/diag/appendixes/cmdline/xxmaxdirectmemorysize.html

它从小开始慢慢成长。

您更有可能存在内存泄漏,应该进行调查。

文档(对于 IBM Java 7)说它默认是无界的: https://www.ibm.com/support/knowledgecenter/SSYKE2_7.0.0/com.ibm.java.win.70.doc/diag/appendixes/cmdline/xxmaxdirectmemorysize.html

我认为你应该考虑是否愿意让使用直接内存的应用程序失败,同时允许服务器中的其他工作继续进行。设置直接内存大小只会导致应用程序更快失败,因为默认值是无界的。