游戲伺服器內存溢出怎麼辦
㈠ 伺服器內存溢出怎麼解決
1. java.lang.OutOfMemoryError: Java heap space ----JVM Heap(堆)溢出
JVM在啟動的時候會自動設置JVM Heap的值,其初始空間(即-Xms)是物理內存的1/64,最大空間(-Xmx)不可超過物理內存。
可以利用JVM提供的-Xmn -Xms -Xmx等選項可進行設置。Heap的大小是Young Generation和Tenured Generaion之和。
在JVM中如果98%的時間是用於GC,且可用的Heap size不足2%的時候將拋出此異常信息。
解決方法:手動設置JVM Heap(堆)的大小。
2. java.lang.OutOfMemoryError: PermGen space ---- PermGen space溢出。
PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域。
為什麼會內存溢出,這是由於這塊內存主要是被JVM存放Class和Meta信息的,Class在被Load的時候被放入PermGen space區域,它和存放Instance的Heap區域不同,sun的 GC不會在主程序運行期對PermGen space進行清理,所以如果你的APP會載入很多CLASS的話,就很可能出現PermGen space溢出。
解決方法: 手動設置MaxPermSize大小
3. java.lang.StackOverflowError ---- 棧溢出
棧溢出了,JVM依然是採用棧式的虛擬機,這個和C和Pascal都是一樣的。函數的調用過程都體現在堆棧和退棧上了。
調用構造函數的 「層」太多了,以致於把棧區溢出了。
通常來講,一般棧區遠遠小於堆區的,因為函數調用過程往往不會多於上千層,而即便每個函數調用需要 1K的空間(這個大約相當於在一個C函數內聲明了256個int類型的變數),那麼棧區也不過是需要1MB的空間。通常棧的大小是1-2MB的。
通常遞歸也不要遞歸的層次過多,很容易溢出。
解決方法:修改程序。
㈡ 我的世界進游戲伺服器會顯示 out of memory
out of memory是內存溢出,也就是內存不夠用的意思,把分配給java的內存設置高一點就能解決這個問題。
我發的這個圖片是用HMCL啟動器設置分配給java的內存的步驟,如果你沒有HMCL啟動器可以去下載一個,官網地址:hmcl.huangyuhui.net,把下載後的啟動器程序跟客戶端的.minecraft文件夾放置一起(同一目錄下),然後打開它你就會看到像我圖里這個界面了。
在圖二里畫橫線的地方的數字設置高一點,我這里是1024MB,也就是1G,如果你已經是這個數值了,那麼你可以高一些,只要不超過左邊寫的「物理內存大小」的數值就好。
設置好後開游戲如果還是out of memory,那就再調高一點,總之設置的內存夠了游戲就不會有這個提示了。
以上,祝游戲愉快!