2016-03-17 66 views
2

我有一个在Websphere 8.5上运行的应用程序,我知道这个特定JVM的堆内存大小在过去增加了。 承诺的内存现在是5.6GB,但我们有直接缓冲区内存相关的内存问题,现在我们还需要调整它的大小。我可以通过监视收费来看到这个问题,所以我看不到直接内存的大小。调整直接缓冲区内存大小

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

XX:MaxDirectMemorySize选项的默认值是什么?

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

回答

4

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

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

+0

也许有人在增加总堆内存大小之前更改了此选项。服务器中没有其他工作继续进行,因为我使用的监视工具可以跟踪应用程序启动的任何异步任务。 – dinhokz

+1

它可能是之前更改过的,也许有人不明白效果会是什么。在任何情况下,如果服务器在达到限制后不处理任何工作,那么根本没有看到设置属性的好处 - 也可以让它默认为无界限,并让服务器运行,只要它可以直到耗尽,同时调试可能的内存泄漏。 – kaczyns