我的世界電腦伺服器內存溢出
1. 我的世界總是內存溢出
應該是兩個方面 第一個方面 你客戶端裡面裝了太多東西 耗費了太多資源 要不就把可見范圍調小點 要不就刪掉一下無用MOD 第二個方面你內存調用太小了 我有時候開光影 上材質包 再加幾個MOD 2G根本不夠用 4G才可以
2. 我的世界mod服,java內存溢出如何解決
右擊「計算機」打開屬性面板
點擊屬性面板的「高級系統設置」打開「性能」下面的「設置」
點擊「性能選項」上的「高級」
在」虛擬內存「處點擊更改 > 去除」自動*所有驅動器的分頁文件大小「選項
在自定義大小處修改虛擬內存的初始大小和最大值 > 點擊」設置「按鈕後點擊」確定「即可。
3. 我的世界進游戲伺服器會顯示 out of memory
out of memory是內存溢出,也就是內存不夠用的意思,把分配給java的內存設置高一點就能解決這個問題。
我發的這個圖片是用HMCL啟動器設置分配給java的內存的步驟,如果你沒有HMCL啟動器可以去下載一個,官網地址:hmcl.huangyuhui.net,把下載後的啟動器程序跟客戶端的.minecraft文件夾放置一起(同一目錄下),然後打開它你就會看到像我圖里這個界面了。
在圖二里畫橫線的地方的數字設置高一點,我這里是1024MB,也就是1G,如果你已經是這個數值了,那麼你可以高一些,只要不超過左邊寫的「物理內存大小」的數值就好。
設置好後開游戲如果還是out of memory,那就再調高一點,總之設置的內存夠了游戲就不會有這個提示了。
以上,祝游戲愉快!
4. Minecraft 經常內存溢出 怎麼辦
系統屬性-高級-高級-虛擬內存-更改-在空餘的磁碟(最好不要sys盤)設置自定義大小=內存容量的2倍,最小值=最大值
5. MC伺服器 內存溢出
就1024.。。。沒有4g以上的內存根本玩不了,除非你玩原版。可是你內存溢出,除非游戲出問題,不然就是打了mod。還是建議多設一些內存吧。
6. 我的世界out of memory怎麼解決
解決如下:
1、你的電腦配置較低,根本不適合運行這種游戲;解決方法是提高電腦配置,增加內存條。
2、游戲本身問題,游戲編寫的代碼有嚴重吃內存的漏洞;解決方法是刪掉游戲不玩了。
3、病毒造成,病毒吃掉了大部分內存;解決方法是查殺病毒。
我的世界:
《我的世界》是一款帶有生存冒險元素的建造類游戲。我的世界:整個游戲世界由各種方塊構成,玩家可以破壞它們,也可以用自己的方塊隨意建造東西。為了在游戲里生存和發展,玩家需要通過伐木、挖礦、捕獵等方式獲取資源,並通過合成系統打造武器和工具。
7. 玩Minecraft總是內存溢出怎麼辦
一、數組分配的上限
Java里數組的大小是受限制的,因為它使用的是int類型作為數組下標。這意味著你無法申請超過Integer.MAX_VALUE(2^31-1)大小的數組。這並不是說你申請內存的上限就是2G。你可以申請一個大一點的類型的數組。比如:
復制代碼代碼如下:
final long[] ar = new long[ Integer.MAX_VALUE ];
這個會分配16G -8位元組,如果你設置的-Xmx參數足夠大的話(通常你的堆至少得保留50%以上的空間,也就是說分配16G的內存,你得設置成-Xmx24G。這只是一般的規則,具體分配多大要看實際情況)。
不幸的是,在Java里,由於數組元素的類型的限制,你操作起內存來會比較麻煩。在操作數組方面,ByteBuffer應該是最有用的一個類了,它提供了讀寫不同的Java類型的方法。它的缺點是,目標數組類型必須是byte[],也就是說你分配的內存緩存最大隻能是2G。
二、把所有數組都當作byte數組來進行操作
假設現在2G內存對我們來說遠遠不夠,如果是16G的話還算可以。我們已經分配了一個long[],不過我們希望把它當作byte數組來進行操作。在Java里我們得求助下C程序員的好幫手了——sun.misc.Unsafe。這個類有兩組方法:getN(object, offset),這個方法是要從object偏移量為offset的位置獲取一個指定類型的值並返回它,N在這里就是代表著那個要返回值的類型,而putN(Object,offset,value)方法就是要把一個值寫到Object的offset的那個位置。
不幸的是,這些方法只能獲取或者設置某個類型的值。如果你從數組里拷貝數據,你還需要unsafe的另一個方法,Memory(srcObject, srcOffset, destObject,destOffet,count)。這和System.array的工作方式類似,不過它拷貝的是位元組而不是數組元素。
想通過sun.misc.Unsafe來訪問數組的數據,你需要兩個東西:
1.數組對象里數據的偏移量
2.拷貝的元素在數組數據里的偏移量
Arrays和Java別的對象一樣,都有一個對象頭,它是存儲在實際的數據前面的。這個頭的長度可以通過unsafe.arrayBaseOffset(T[].class)方法來獲取到,這里T是數組元素的類型。數組元素的大小可以通過unsafe.arrayIndexScale(T[].class) 方法獲取到。這也就是說要訪問類型為T的第N個元素的話,你的偏移量offset應該是arrayOffset+N*arrayScale。
我們來寫個簡單的例子吧。我們分配一個long數組,然後更新它裡面的幾個位元組。我們把最後一個元素更新成-1(16進制的話是0xFFFF FFFF FFFF FFFF),然再逐個清除這個元素的所有位元組。
復制代碼代碼如下:
final long[] ar = new long[ 1000 ];
final int index = ar.length - 1;
ar[ index ] = -1; //FFFF FFFF FFFF FFFF
System.out.println( "Before change = " + Long.toHexString( ar[ index ] ));
for ( long i = 0; i < 8; ++i )
{
unsafe.putByte( ar, longArrayOffset + 8L * index + i, (byte) 0);
System.out.println( "After change: i = " + i + ", val = " + Long.toHexString( ar[ index ] ));
}
想運行上面 這個例子的話,得在你的測試類里加上下面的靜態代碼塊:
復制代碼代碼如下:
private static final Unsafe unsafe;
static
{
try
{
Field field = Unsafe.class.getDeclaredField("theUnsafe");
field.setAccessible(true);
unsafe = (Unsafe)field.get(null);
}
catch (Exception e)
{
throw new RuntimeException(e);
}
}
private static final long longArrayOffset = unsafe.arrayBaseOffset(long[].class);
輸出的結果是:
復制代碼代碼如下:
Before change = ffffffffffffffff
After change: i = 0, val = ffffffffffffff00
After change: i = 1, val = ffffffffffff0000
After change: i = 2, val = ffffffffff000000
After change: i = 3, val = ffffffff00000000
After change: i = 4, val = ffffff0000000000
After change: i = 5, val = ffff000000000000
After change: i = 6, val = ff00000000000000
After change: i = 7, val = 0
三、sun.misc.Unsafe的內存分配
上面也說過了,在純Java里我們的能分配的內存大小是有限的。這個限制在Java的最初版本里就已經定下來了,那個時候人們都不敢相像分配好幾個G的內存是什麼情況。不過現在已經是大數據的時代了,我們需要更多的內存。在Java里,想獲取更多的內存有兩個方法:
1.分配許多小塊的內存,然後邏輯上把它們當作一塊連續的大內存來使用。
2.使用sun.misc.Unsafe.allcateMemory(long)來進行內存分配。
第一個方法只是從演算法的角度來看比較有意思一點,所以我們還是來看下第二個方法。
sun.misc.Unsafe提供了一組方法來進行內存的分配,重新分配,以及釋放。它們和C的malloc/free方法很像:
1.long Unsafe.allocateMemory(long size)——分配一塊內存空間。這塊內存可能會包含垃圾數據(沒有自動清零)。如果分配失敗的話會拋一個java.lang.OutOfMemoryError的異常。它會返回一個非零的內存地址(看下面的描述)。
2.Unsafe.reallocateMemory(long address, long size)——重新分配一塊內存,把數據從舊的內存緩沖區(address指向的地方)中拷貝到的新分配的內存塊中。如果地址等於0,這個方法和allocateMemory的效果是一樣的。它返回的是新的內存緩沖區的地址。
3.Unsafe.freeMemory(long address)——釋放一個由前面那兩方法生成的內存緩沖區。如果address為0什麼也不幹 。
這些方法分配的內存應該在一個被稱為單寄存器地址的模式下使用:Unsafe提供了一組只接受一個地址參數的方法(不像雙寄存器模式,它們需要一個Object還有一個偏移量offset)。通過這種方式分配的內存可以比你在-Xmx的Java參數里配置的還要大。
注意:Unsafe分配出來的內存是無法進行垃圾回收的。你得把它當成一種正常的資源,自己去進行管理。
下面是使用Unsafe.allocateMemory分配內存的一個例子,同時它還檢查了整個內存緩沖區是不是可讀寫的:
復制代碼代碼如下:
final int size = Integer.MAX_VALUE / 2;
final long addr = unsafe.allocateMemory( size );
try
{
System.out.println( "Unsafe address = " + addr );
for ( int i = 0; i < size; ++i )
{
unsafe.putByte( addr + i, (byte) 123);
if ( unsafe.getByte( addr + i ) != 123 )
System.out.println( "Failed at offset = " + i );
}
}
finally
{
unsafe.freeMemory( addr );
}
正如你所看見的,使用sun.misc.Unsafe你可以寫出非常通用的內存訪問的代碼:不管是Java里分配的何種內存,你都可以隨意讀寫任意類型的數據。
8. 我的世界伺服器突然內存暴增是怎麼回事
電腦CPU不夠吧,或者游戲開了材質包和大量mod導致電腦運行不過來。現今很占內存的游戲一般都是3D游戲。還有就是你隱藏的開機啟動項應該是太多了,系統服務進程太多. 下一個最新的360,在軟體管理裡面可以把很多不必要的開機啟動關閉,節省內存 以上解決不了問題,那就可以懷疑是否是內存條使用過久,或者提前損壞了...
9. 我的世界內存溢出怎麼辦!!
建議內存大小設置小了點,你調到1024MB。另外你是不是下了光影MOD之類的。我的世界時比較吃內存,但是你有3G內存吧,應該也能玩。建議你可以安裝個游戲加加,游戲里可以顯示你的內存佔用,還可以自動釋放內存,對內存小的電腦還是很有幫助的。玩游戲時盡量別開別的網頁QQ什麼的了,應該會好些。