أصلح “⁨OutOfMemoryError: Java heap space⁩” و“⁨Could not reserve enough space⁩” على خادم ⁨Minecraft⁩

ثلاث مشكلات مختلفة تُسمّى “⁨out of memory⁩”. إذا لم يبدأ الخادم وذكر ⁨object heap⁩، فقد طلبت من ⁨Java⁩ ذاكرة ⁨RAM⁩ أكبر مما يملكه الجهاز. وإذا عمل ثم انهار مع ⁨OutOfMemoryError⁩، فقد احتاج أكثر مما أعطيته، أو أن شيئًا ما يتسرّب. وإذا قال “⁨Killed⁩” فقط، فقد أنهاه نظام التشغيل.

بقلم فريق ⁨Nodewave⁩ · آخر تحديث ⁨8⁩ نوفمبر ⁨2026⁩

أي خطأ لديك؟

الرسالةما معناه
⁨Could not reserve enough space for object heap⁩عند البدء: -⁨Xmx⁩ أكبر من الذاكرة المتاحة، أو أنك تستخدم ⁨Java⁩ بنظام ⁨32⁩ بت.
⁨java.lang.OutOfMemoryError: Java heap space⁩أثناء التشغيل: الـ ⁨heap⁩ ممتلئ. يحتاج الخادم إلى ذاكرة أكبر أو حمل أقل، أو لديه تسرّب.
⁨GC overhead limit exceeded⁩يقضي ⁨Java⁩ معظم وقته في تنظيف الذاكرة. أسبابه هي نفسها أسباب امتلاء الـ ⁨heap⁩.
“⁨Killed⁩” أو ⁨exit code 137⁩أنهى نظام التشغيل أو الحاوية الخادم لأن الجهاز كله نفدت ذاكرته.

⁨Could not reserve enough space for object heap⁩

  1. تحقق من الذاكرة الحرة. على ⁨Linux⁩، شغّل ⁨free -h⁩. وعلى ⁨Windows⁩، افتح ⁨Task Manager⁩.
  2. اخفض -⁨Xmx⁩. يستخدم ⁨Java⁩ أكثر من الـ ⁨heap⁩، لذا على جهاز صغير اجعل -⁨Xmx⁩ ثلاثة أرباع الذاكرة كحدّ أقصى تقريبًا. وعلى خادم ⁨4 GB⁩، تُعد ⁨3G⁩ سقفًا آمنًا.
  3. استخدم ⁨Java⁩ بنظام ⁨64⁩ بت. يجب أن تذكر مخرجات ⁨java -version⁩ العبارة ⁨64-Bit⁩. ولا يستطيع ⁨Java⁩ بنظام ⁨32⁩ بت حجز ⁨heap⁩ كبير.
⁨java -Xms3G -Xmx3G -jar server.jar --nogui⁩

اضبط -⁨Xms⁩ على القيمة نفسها لـ -⁨Xmx⁩، ليحجز الخادم ذاكرته مرة واحدة عند البدء.

⁨java.lang.OutOfMemoryError: Java heap space⁩

  1. أعطِ الخادم ذاكرة أكبر، إن كان الجهاز يملكها. راجع كم من ⁨RAM⁩ يحتاجه خادم ⁨Minecraft⁩ لمعرفة الأحجام بحسب نوع الخادم.
  2. خفّف الحمل. اخفض ⁨view-distance⁩ و⁨simulation-distance⁩ في ⁨server.properties⁩، مثلًا إلى ⁨8⁩ و⁨6⁩.
  3. ابحث عن تسرّب. ثبّت إضافة ⁨spark⁩ أو مودها، واترك الخادم يعمل حتى ترتفع الذاكرة، ثم شغّل /⁨spark heapsummary⁩. يسرد ما يستهلك أكبر قدر من الذاكرة. وفئات من إضافة واحدة في أعلى القائمة تشير إلى المسبّب.
  4. حدّث المسبّب أو أزله. كثيرًا ما تُصلح تسرّبات الذاكرة في إصدار أحدث من الإضافة. وإعطاء إضافة متسرّبة ذاكرة أكبر لا يؤخر الانهيار إلا قليلًا.
  5. أعد التشغيل بجدول زمني. إعادة تشغيل يومية تخفي تسرّبًا بطيئًا إلى أن تجده. هذا حل مؤقت لا إصلاح.

“⁨Killed⁩” و⁨exit code 137⁩

هذا ليس خطأ ⁨Java⁩. على ⁨Linux⁩، يُنهي ⁨killer⁩ نفاد الذاكرة (⁨out-of-memory killer)⁩ أكبر عملية حين تنفد ذاكرة الجهاز كله، وتفعل الحاويات الشيء نفسه عند حدّ ذاكرتها. تأكد من ذلك في سجل النواة:

⁨sudo dmesg⁩ | ⁨grep -i⁩ "⁨killed process⁩"

للإصلاح، اخفض -⁨Xmx⁩ بحيث يتسع ⁨Java⁩ مع كل شيء آخر على الجهاز في الـ ⁨RAM⁩، وأوقف البرامج الأخرى الشرهة للذاكرة، مثل قاعدة بيانات أو خادم لعبة ثانٍ. ملف ⁨swap⁩ صغير يعمل كشبكة أمان، لا كبديل عن ⁨RAM⁩.

امنع تكرار المشكلة

استضف خادم ⁨Minecraft⁩ في سنغافورة

⁨ping⁩ منخفض للاعبين في الهند وماليزيا وإندونيسيا، على أنوية ⁨AMD EPYC⁩ سريعة مع ⁨NVMe⁩ وحماية من ⁨DDoS⁩.

استضافة ⁨Minecraft⁩ في سنغافورة →