2016-03-17 68 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