كيف أقوم بتعيين الحد الأدنى والحد الأقصى لحجم الكومة في Java من خلال متغيرات البيئة؟
-
03-07-2019 - |
سؤال
كيف أقوم بتعيين الحد الأدنى والحد الأقصى لحجم الكومة في Java من خلال متغيرات البيئة؟
أعلم أنه يمكن ضبط أحجام الكومة عند تشغيل Java، ولكنني أرغب في تعديل ذلك من خلال متغيرات البيئة على الخادم الخاص بي.
المحلول
وأنت لا تستطيع أن تفعل ذلك باستخدام متغيرات البيئة مباشرة. تحتاج إلى استخدام مجموعة من الخيارات "غير القياسية" التي تم تمريرها إلى الأمر جافا. تشغيل: -X جافا للحصول على التفاصيل. الخيارات التي تبحث عنها هي -Xmx و-Xms (هذا هو "الأولي" حجم كومة، لذلك ربما ما كنت تبحث عنه.)
وبعض المنتجات مثل النمل أو القط قد تأتي مع دفعة السيناريو الذي يبحث عن متغير البيئة JAVA_OPTS، ولكنها ليست جزءا من وقت التشغيل جافا. إذا كنت تستخدم واحدة من تلك المنتجات، وكنت قد تكون قادرة على تعيين متغير مثل:
set JAVA_OPTS="-Xms128m -Xmx256m"
ويمكنك أيضا أن تأخذ هذا النهج مع سطر الأوامر الخاصة بك مثل:
set JAVA_OPTS="-Xms128m -Xmx256m"
java ${JAVA_OPTS} MyClass
نصائح أخرى
إذا كنت تريد أي عملية java
، وليس فقط النمل أو القط، لالتقاط خيارات مثل -Xmx
استخدام البيئة _JAVA_OPTIONS
متغير.
في باش: export _JAVA_OPTIONS="-Xmx1g"
في الواقع، ليس هناك طريقة لوضع افتراضات عالمية لJVM الشمس عبر متغيرات البيئة.
وانظر <لأ href = "https://stackoverflow.com/questions/12577437/how-to-set-a-java-system-property-so-that-it-is-effective-whenever-i-start -jvm-ث "> كيفية تعيين خاصية نظام جافا بحيث يكون فعالا كلما أبدأ JVM دون إضافته إلى الأمر وسائط سطر .
وأنت لا تستطيع أن تفعل ذلك باستخدام متغيرات البيئة. يتم ذلك عن طريق خيارات "غير قياسي". تشغيل: java -X
للحصول على التفاصيل. الخيارات التي تبحث عنها هي -Xmx
و-Xms
(هذا هو "الأولي" حجم كومة، لذلك ربما ما كنت تبحث عنه.)
وأعتقد أن لديك الخيار الوحيد هو التفاف جافا في السيناريو الذي يستبدل متغيرات البيئة في سطر الأوامر
بضع ملاحظات:
لا يعرف Apache ant أي شيء عن JAVA_OPTS، في حين أن البرامج النصية لبدء تشغيل Tomcat تعرف ذلك.بالنسبة إلى Apache ant، استخدم ANT_OPTS للتأثير على بيئة JVM التي تقوم بتشغيل /ant/، ولكن ليس للأشياء التي قد تقوم ant بتشغيلها.
يعتمد الحد الأقصى لحجم الكومة الذي يمكنك تعيينه بالكامل على البيئة:بالنسبة لمعظم أنظمة 32 بت، الحد الأقصى لمساحة الكومة التي يمكنك طلبها، بغض النظر عن الذاكرة المتوفرة، يقع في نطاق 2 جيجا بايت.أكبر كومة على نظام 64 بت هي "كبيرة حقًا".أيضًا، أنت مقيد عمليًا بالذاكرة الفعلية أيضًا، نظرًا لأن الكومة تتم إدارتها بواسطة JVM ولا تريد إجراء الكثير من عمليات التبديل على القرص.
بالنسبة لبيئات الخادم، عادةً ما تريد تعيين -Xms و-Xmx على نفس القيمة:سيؤدي هذا إلى إصلاح حجم الكومة عند حجم معين وسيكون لدى جامع البيانات المهملة عمل أقل للقيام به لأن الكومة لن تحتاج أبدًا إلى إعادة حجمها.