我有一个在 Websphere 8.5 上运行的应用程序,我知道这个特定 JVM 的堆内存大小在过去有所增加。现在提交的内存是 5.6GB,但是我们遇到了与直接缓冲内存相关的内存问题,现在我们也需要调整它的大小。我可以通过监控收费看到这个问题,所以我看不到直接内存的大小。
我的问题是:根据 Java 堆内存大小,直接内存的大小是否正确?可以说,每个 X GB 至少 X MB。
XX:MaxDirectMemorySize 选项的默认值是多少?
在更改此选项之前我还应该考虑什么?
我有一个在 Websphere 8.5 上运行的应用程序,我知道这个特定 JVM 的堆内存大小在过去有所增加。现在提交的内存是 5.6GB,但是我们遇到了与直接缓冲内存相关的内存问题,现在我们也需要调整它的大小。我可以通过监控收费看到这个问题,所以我看不到直接内存的大小。
我的问题是:根据 Java 堆内存大小,直接内存的大小是否正确?可以说,每个 X GB 至少 X MB。
XX:MaxDirectMemorySize 选项的默认值是多少?
在更改此选项之前我还应该考虑什么?
文档(对于 IBM Java 7)说默认情况下它是无界的: https ://www.ibm.com/support/knowledgecenter/SSYKE2_7.0.0/com.ibm.java.win.70.doc/diag/appendixes/cmdline/ xxmaxdirectmemorysize.html
我认为您应该考虑是否愿意让使用直接内存的应用程序失败,同时允许服务器中的其他工作继续进行。设置直接内存大小只会导致应用程序更快地失败,因为默认值是无限的。
根据 Oracle 文档
http://docs.oracle.com/cd/E15289_01/doc.40/e15062/optionxx.htm#BABGCFFB
默认没有限制
根据 IBM 文档
它从小开始,慢慢成长。
您更有可能存在应该调查的内存泄漏。