Vps
OpenVZ 中的 Java VM 問題
我買了一個 vps 來託管我的 java 需求。但是我不能在上面執行java。有關 java 的所有內容都已正確安裝,但是當我嘗試執行 java(例如“java -version”)時,出現此錯誤:
*VM 初始化期間發生錯誤
無法為對象堆保留足夠的空間
無法創建 Java 虛擬機。*
我不認為這是一個以 java 為中心的問題,肯定是記憶體不足。我聯繫了 vps 管理員,但他說一切都很好,你有 2gb 記憶體,可擴展至 4gb!我對該主題進行了一些搜尋,這是我的 BEANS 文件(使用腳本將數字轉換為人類可編輯的形式)。順便說一句,JVM 堆記憶體分配是否依賴 kmemsize 或 privvmpages ?該配置允許我為單個程序分配多少記憶體?
resource held maxheld barrier limit failcnt kmemsize 2.25 mb 2.35 mb 13.71 mb 14.10 mb 0 lockedpages 0 0 1024.00 kb 1024.00 kb 0 privvmpages 20.54 mb 21.33 mb 256.00 mb 272.00 mb 156 shmpages 5.00 mb 5.00 mb 84.00 mb 84.00 mb 0 numproc 13 14 240 240 0 physpages 9.36 mb 9.45 mb 0 MAX_ULONG 0 vmguarpages 0 0 132.00 mb MAX_ULONG 0 oomguarpages 9.36 mb 9.45 mb MAX_ULONG MAX_ULONG 0 numtcpsock 3 3 360 360 0 numflock 3 3 188 206 0 numpty 2 2 16 16 0 numsiginfo 0 1 256 256 0 tcpsndbuf 69.17 kb 69.17 kb 1.64 mb 2.58 mb 0 tcprcvbuf 48.00 kb 48.00 kb 1.64 mb 2.58 mb 0 othersockbuf 6.80 kb 6.80 kb 1.07 mb 2.00 mb 0 dgramrcvbuf 0.00 kb 0.00 kb 256.00 kb 256.00 kb 0 numothersock 9 10 360 360 0 dcachesize 0.00 kb 0.00 kb 3.25 mb 3.46 mb 0 numfile 704 746 9312 9312 0 numiptent 10 10 128 128 0
提前致謝!
仔細檢查您的腳本是否正確翻譯了原始 beancounters。據此,您只有 256 兆記憶體,而不是管理員告訴您的 4 個演出。
只專注於 2 個豆子:
- privvmpages - 容器可以分配的最大記憶體量(預留)
- oomguarpages - 保證您的容器將實際使用的記憶體量。如果主機記憶體緊張,使用超過該數量的所有內容都可能會被殺死。
Java 因分配大量記憶體然後從不使用它們而臭名昭著,指望作業系統過度使用。根據我的經驗,您至少需要一個 privvmpages 才能可靠地執行 JVM,儘管只會使用幾十兆。
經過幾個月的試驗並試圖在執行 Java 的 VE 中包含 privvmpages,我個人已經放棄了,我只是將障礙設置為最大值並適當調整 oomguarpages 並希望獲得最好的結果;)