我有一個在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文檔
它開始時很小,慢慢長大。
這很可能是你有內存泄漏,應該調查。
也許有人在增加總堆內存大小之前更改了此選項。服務器中沒有其他工作繼續進行,因爲我使用的監視工具可以跟蹤應用程序啓動的任何異步任務。 – dinhokz
它可能是之前更改過的,也許有人不明白效果會是什麼。在任何情況下,如果服務器在達到限制後不處理任何工作,那麼根本沒有看到設置屬性的好處 - 也可以讓它默認爲無界限,並讓服務器運行,只要它可以直到耗盡,同時調試可能的內存泄漏。 – kaczyns