אוסף זבל כניסה לקובץ ב- Java

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

אוסף זבל הוא פלא משפת התכנות של ג'אווה המספקת לנו ניהול זיכרון אוטומטי. איסוף האשפה מסתיר את הפרטים של הצורך להקצות ולזמן ידנית זיכרון. מנגנון זה אמנם פנטסטי, אך לפעמים הוא לא עובד כמו שאנחנו רוצים. במדריך זה נחקור את Java אפשרויות רישום לסטטיסטיקה של איסוף אשפה ולגלות איך להפנות נתונים סטטיסטיים אלה לקובץ.

2. דגלי רישום GC ב- Java 8 ומוקדם יותר

ראשית, בואו נחקור את דגלי JVM המתייחסים לרישום GC בגרסאות Java לפני Java 9.

2.1. -XX: + PrintGC

ה -XX: + PrintGC דגל הוא כינוי עבור מילולית: gc ו מפעיל רישום GC בסיסי. במצב זה מודפסת שורה אחת לכל דור צעיר ולכל אוסף דור מלא. בואו נפנה את תשומת ליבנו לספק מידע מפורט על GC.

2.2. -XX: + PrintGCDetails

באופן דומה, יש לנו את הדגל -XX: + PrintGCDetails היה להפעיל רישום GC מפורט במקום -XX: + PrintGC.

שים לב שהפלט מ -XX: + PrintGCDetails משתנה בהתאם לאלגוריתם GC שבשימוש.

לאחר מכן נבחן ביאורים ביומנינו עם מידע על תאריך ושעה.

2.3. -XX: + PrintGCDateStamps ו -XX: + PrintGCTimeStamps

אנחנו יכולים הוסף תאריכים ומידע תזמון ליומני GC שלנו על ידי שימוש בדגלים -XX: + PrintGCDateStamps ו -XX: + PrintGCTimeStamps, בהתאמה.

ראשון, -XX: + PrintGCDateStamps מוסיף את התאריך והשעה של ערך היומן לתחילת כל שורה.

שְׁנִיָה, -XX: PrintGCTimeStamps מוסיף חותמת זמן לכל שורה ביומן המפרטת את הזמן שעבר (בשניות) מאז תחילת ה- JVM.

2.4. -Xloggc

לבסוף, אנו מגיעים הפניית יומן GC לקובץ. דגל זה לוקח שם קובץ אופציונלי כארגומנט באמצעות התחביר -Xloggc: קובץ וללא נוכחות של שם קובץ יומן ה- GC נכתב כסטנדרט.

בנוסף, דגל זה גם מגדיר את -XX: PrintGC ו -XX: PrintGCTimestampes דגלים עבורנו. בואו נסתכל על כמה דוגמאות:

אם אנו רוצים לכתוב את יומן GC לפלט רגיל, נוכל להריץ:

java -cp $ CLASSPATH -Xloggc mypackage.MainClass

או כדי לכתוב את יומן ה- GC לקובץ, נפעיל:

java -cp $ CLASSPATH -Xloggc: /tmp/gc.log mypackage.MainClass

3. דגלי רישום GC ב- Java 9 ואילך

ב- Java 9+, -XX: PrintGC, הכינוי עבור מילולית: gc, הוצא משימוש לטובת אפשרות רישום מאוחדת, -Xlog. כל שאר דגלי GC שהוזכרו לעיל עדיין תקפים ב- Java 9+. אפשרות רישום חדשה זו מאפשרת לנו ציין אילו הודעות יש להציג, הגדר את רמת היומן והפנה מחדש את הפלט.

אנו יכולים להפעיל את הפקודה למטה כדי לראות את כל האפשרויות הזמינות עבור רמות יומן, מעצבי יומן וערכות תגיות:

java -Xlog: כניסה = ניפוי-ניפוי 

לדוגמא, אם היינו רוצים לתעד את כל הודעות GC לקובץ, היינו מפעילים:

java -cp $ CLASSPATH -Xlog: gc * = ניפוי באגים: file = / tmp / gc.log mypackage.MainClass

בנוסף, ניתן לחזור על דגל הרישום המאוחד החדש הזה, כך שתוכל, למשל, רשום את כל הודעות ה- GC הן לקובץ רגיל והן לקובץ:

java -cp $ CLASSPATH -Xlog: gc * = ניפוי: stdout -Xlog: gc * = ניפוי: file = / tmp / gc.log mypackage.MainClass

4. מסקנה

במאמר זה הראינו כיצד לרשום פלט איסוף אשפה גם ב- Java 8 וגם ב- Java 9+, כולל כיצד להפנות את הפלט לקובץ.


$config[zx-auto] not found$config[zx-overlay] not found