Avatar ·

ما هي المعلمات -Xms و -Xmx عند تشغيل JVM وكيف تؤثر على الذاكرة؟

مرحباً بالجميع! أنا مطور Java مبتدئ، واجهت مؤخراً مشكلة عند تشغيل تطبيقي على الخادم. التطبيق يعالج ملفات CSV كبيرة (حوالي 500 ميجابايت)، ولاحظت أنه يتعطل بشكل دوري مع خطأ OutOfMemoryError: Java heap space.

أقوم بتشغيل التطبيق عبر سطر الأوامر تقريباً هكذا:

java -jar myapp.jar

قال زميل إنني بحاجة لإضافة المعلمات -Xms و -Xmx، لكنني لا أفهم تماماً ماذا يفعلان. جربت إضافتهما بشكل عشوائي:

java -Xms512m -Xmx1024m -jar myapp.jar

بعد ذلك أصبح الخطأ يظهر بشكل أقل، لكنه لا يزال يحدث أحياناً عندما يكون الملف كبيراً بشكل خاص. قرأت الوثائق لكنها تبدو معقدة جداً للمبتدئ. هل يمكنكم الشرح بكلمات بسيطة:

  • ما هما -Xms و -Xmx؟
  • ما الفرق بينهما؟
  • كيف أختار القيم المناسبة؟
  • هل