يجب أن يكون سؤالي الأول ، لماذا تقوم بتعيينه على الإطلاق؟ يقوم الخادم JVM بتعيين الحد الأقصى إلى 1/4 من حجم الذاكرة الرئيسي وهذا معقول لمعظم التطبيقات. يمكنك تغيير هذا عن طريق بناء JVM أو يمكنك إنشاء اسم مستعار مثل
alias java="java -Xmx30g"
ما يمكنك فعله هو التحقق من استخدام الذاكرة بشكل دوري وقتل العملية إذا كنت تستخدم المزيد. هذه فكرة سيئة للغاية بالطبع.
بدلاً من ذلك ، ما يمكنك فعله هو تشغيل البرنامج مرة أخرى مع نفس الوسائط ولكن مع الحد الأقصى لحجم الكومة الذي تريده. أي يمكنك Runtime.exec.
لا يمكنك تغييره لأنه يحتفظ بحجم الذاكرة الأقصى عند البدء.
راجع للشغل هناك اعتقاد خاطئ شائع بأن الكومة هي الذاكرة الوحيدة التي تهم. هذا ليس صحيحًا مثل JVM ، فترسمة مؤشرات الترابط ، والذاكرة الأصلية ، وما إلى ذلك ، تستخدم بعض الذاكرة ، لذا يمكنك أن تكون الكومة تصل إلى 100 ميغابايت ولكن يمكن أن تستخدم JVM 300 ميغابايت.