Vps

OpenVZ 中的 Java VM 問題

  • March 2, 2013

我買了一個 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 並希望獲得最好的結果;)

引用自:https://serverfault.com/questions/168080