Atasi “OutOfMemoryError: Java heap space” dan “Could not reserve enough space” pada pelayan Minecraft

Tiga masalah berbeza dipanggil “out of memory”. Jika pelayan tidak mahu bermula dan menyebut object heap, anda meminta Java menggunakan RAM lebih banyak daripada yang dimiliki mesin. Jika ia berjalan kemudian ranap dengan OutOfMemoryError, ia memerlukan lebih daripada yang anda beri, atau sesuatu bocor. Jika ia hanya menyatakan “Killed”, sistem pengendalian yang menamatkannya.

Oleh pasukan Nodewave · Dikemas kini 8 November 2026

Ralat mana yang anda alami?

MesejMaksudnya
Could not reserve enough space for object heapSemasa bermula: -Xmx melebihi memori yang ada, atau anda menggunakan Java 32-bit.
java.lang.OutOfMemoryError: Java heap spaceSemasa berjalan: heap penuh. Pelayan memerlukan lebih memori, beban lebih ringan, atau ada kebocoran.
GC overhead limit exceededJava menghabiskan hampir seluruh masanya membersihkan memori. Puncanya sama seperti heap yang penuh.
“Killed”, atau exit code 137Sistem pengendalian atau container menamatkan pelayan kerana seluruh mesin kehabisan memori.

Could not reserve enough space for object heap

  1. Semak memori yang bebas. Pada Linux, jalankan free -h. Pada Windows, buka Task Manager.
  2. Turunkan -Xmx. Java menggunakan lebih daripada heap, jadi pada mesin kecil hadkan -Xmx kepada paling banyak kira-kira tiga perempat RAM. Pada pelayan 4 GB, 3G ialah had atas yang selamat.
  3. Gunakan Java 64-bit. Output java -version sepatutnya menyebut 64-Bit. Java 32-bit tidak dapat menempah heap yang besar.
java -Xms3G -Xmx3G -jar server.jar --nogui

Tetapkan -Xms sama dengan -Xmx, supaya pelayan menempah memorinya sekali sahaja di awal.

java.lang.OutOfMemoryError: Java heap space

  1. Beri pelayan lebih banyak memori, jika mesin ada. Lihat berapa banyak RAM yang diperlukan pelayan Minecraft untuk saiz mengikut jenis pelayan.
  2. Kurangkan beban. Turunkan view-distance dan simulation-distance dalam server.properties, contohnya kepada 8 dan 6.
  3. Cari kebocoran. Pasang plugin atau mod spark, biarkan pelayan berjalan sehingga memori tinggi, kemudian jalankan /spark heapsummary. Ia menyenaraikan apa yang menggunakan memori paling banyak. Kelas daripada satu plugin di bahagian atas senarai menunjuk kepada puncanya.
  4. Kemas kini atau buang puncanya. Kebocoran memori sering dibetulkan dalam versi plugin yang lebih baharu. Memberi plugin yang bocor lebih banyak memori hanya melambatkan ranap.
  5. Mulakan semula mengikut jadual. Permulaan semula harian menyembunyikan kebocoran perlahan sehingga anda menemuinya. Ia penyelesaian sementara, bukan pembetulan.

“Killed” dan exit code 137

Ini bukan ralat Java. Pada Linux, out-of-memory killer menamatkan proses terbesar apabila seluruh mesin kehabisan memori, dan container berbuat demikian pada had memorinya. Sahkan dalam log kernel:

sudo dmesg | grep -i "killed process"

Untuk membetulkannya, turunkan -Xmx supaya Java bersama semua yang lain pada mesin muat dalam RAM, dan hentikan perisian lain yang rakus memori, seperti pangkalan data atau pelayan permainan kedua. Fail swap kecil berfungsi sebagai jaring keselamatan, bukan pengganti RAM.

Elakkan ia berulang

Hos pelayan Minecraft anda di Singapura

Ping rendah untuk pemain di India, Malaysia dan Indonesia, pada teras AMD EPYC yang pantas dengan NVMe dan perlindungan DDoS.

Pengehosan Minecraft di Singapura →