קביעת תצורה של גדלי ערימה ב- JVM

1. סקירה כללית

במדריך מהיר זה, נראה כיצד להגדיר את גדלי ערימת החוטים ב- HotSpot JVM.

2. ברירת מחדל של גודל ערימה

לכל שרשור JVM יש ערימה מקורית פרטית לאחסון מידע על ערימת שיחות, משתנים מקומיים ותוצאות חלקיות. לכן, הערימה ממלאת תפקיד מכריע בקריאות שיטה. זה חלק ממפרט ה- JVM, וכתוצאה מכך, כל יישום JVM שם משתמש בערימות.

עם זאת, פרטי יישום אחרים, כגון גודל הערימה, הם ספציפיים ליישום. מעתה ואילך נתמקד ב- HotSpot JVM ונשתמש במונחים JVM ו- HotSpot JVM בערבוביה.

בכל מקרה, ה- JVM ייצור ערימות במקביל ליצירת חוט הבעלות.

אם לא נציין גודל לערימות, ה- JVM ייצור גודל עם גודל ברירת המחדל. בדרך כלל, גודל ברירת המחדל הזה תלוי במערכת ההפעלה ובארכיטקטורת המחשב. לדוגמה, אלה הם כמה מגדלי ברירת המחדל של Java 14:

  • לינוקס / x86 (64 סיביות): 1 מגהבייט
  • macOS (64 סיביות): 1 מגהבייט
  • אורקל סולאריס (64 סיביות): 1 מגהבייט
  • ב- Windows, ה- JVM משתמש בגודל הערימה בכל המערכת

בעיקרון, אנו יכולים לצפות לכ- 1 מגהבייט לכל ערימה במערכות ההפעלה והארכיטקטורות המודרניות ביותר.

3. התאמה אישית של גודל הערימה

כדי לשנות את גודל הערימה, נוכל להשתמש ב- -Xss כִּונוּןדֶגֶל. לדוגמא, ה -Xss1048576 מגדיר את גודל הערימה ל- 1 מגהבייט:

java -Xss1048576 // הושמט

אם אנחנו לא רוצים לחשב את הגודל בבתים, נוכל להשתמש בכמה קיצורי דרך שימושיים כדי לציין יחידות שונות - האות k אוֹ ק כדי לציין KB, M אוֹ M לציון MB, ו- ז אוֹ ז כדי לציין GB. לדוגמה, בואו נראה כמה דרכים שונות להגדיר את גודל הערימה ל- 1 מגהבייט:

-Xss1m -Xss1024k

דומה ל -Xss, אנחנו יכולים גם להשתמש ב- -XX: ThreadStackSize כוונון דגל להגדרת גודל המחסנית. התחביר עבור -XX: ThreadStackSizeעם זאת, הוא קצת שונה. עלינו להפריד את הגודל ואת שם הדגל עם סימן שווה:

java -XX: ThreadStackSize = 1024 // הושמט

ה- HotVot JVM לא יאפשר לנו להשתמש בגודל פחות מערך מינימלי:

$ java -Xss1K -version גודל מחסנית החוטים של Java שצוין הוא קטן מדי. ציין לפחות 144,000 שגיאה: לא ניתן ליצור את המחשב הווירטואלי של Java. שגיאה: התרחש חריג קטלני. התוכנית תצא.

כמו כן, זה לא יאפשר לנו להשתמש בגודל העולה על הערך המקסימלי (בדרך כלל 1 GB):

$ java -Xss2g -version גודל ערימת חוטים לא חוקי: -Xss2g הגודל שצוין חורג מהגודל המרבי המיוצג. שגיאה: לא ניתן ליצור את המחשב הווירטואלי של Java. שגיאה: התרחש חריג קטלני. התוכנית תצא.

4. מסקנה

במדריך מהיר זה, ראינו כיצד להגדיר את גדלי ערימת החוטים ב- HotSpot JVM.