2 回答

TA貢獻1846條經驗 獲得超7個贊
您的問題可能出在toGb
方法上。在 Java 中,整數除法是截斷。這意味著如果您打算通過方法 (500*1024*1024) 返回 500 MB 并打算將其作為整數千兆字節值返回,則除以 (1024*1024*1024),這將始終返回 0。您可以通過嘗試返回一個浮點值(例如 double 或 float)來解決這個問題。
或者,memoryDirect
如果沒有池名稱等于“直接”,則您的變量可能從未設置過。在這種情況下,memoryDict 也將始終為 0。

TA貢獻1809條經驗 獲得超8個贊
我必須為XX:MaxDirectMemorySize
值編寫一個自定義解析器,基本上檢查 G/M/K/none(B) 中指定的值是否并相應地進行轉換。
并且為了在本地測試創建setenv.bat
文件,您可以在其中指定自定義參數 - feset "CATALINA_OPTS=%CATALINA_OPTS% XX:MaxDirectMemorySize=100M"
它會得到 100M 做的事情。
并確保在 VM Arguments 中手動添加此變量 Window > Show View > Servers > (chosen server) > Open launch configuration > (x)= Arguments
在頂部的控制臺中,您應該能夠找到XX:MaxDirectMemorySize
Catalina 設置的參數:
添加回答
舉報