אוסף זבל בג'אווה: כל מה שאתה צריך לדעת



מאמר זה על אוסף זבל בג'אווה נותן לך מושג ברור לגבי אופן פעולתו, סוגיו ושיטות שונות תחת איסוף אשפה בג'אווה.

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

אעסוק בנושאים בסדר הבא:





בואו נתחיל!

מהו אוסף זבל בג'אווה?

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



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

  • תוכניות שאינן מקצות זיכרון יכולות להישבר בסופו של דבר כאשר לא נותר זיכרון במערכת להקצאה. על כל התוכניות הללו יש דליפות זיכרון.
  • איסוף זבל בג'אווה מתרחש באופן אוטומטי במהלך חייה של תוכנית, מבטל את הצורך להקצות זיכרון, ולכן נמנע מדליפות זיכרון.
  • שיטות כמו חינם() ב- C ו- לִמְחוֹק() ב- C ++ משתמשים אך ב- Java הוא מבוצע אוטומטית. כך, מספק ניהול זיכרון טוב יותר.

עכשיו, בואו להבין איך אוסף האשפה האוטומטי הזה עובד בג'אווה.

הערה : אומרים שאובייקט כשיר לאיסוף אשפה אם זה לא ניתן להשגה.



מחרוזת Java java עד כה

כיצד פועל איסוף זבל?

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

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

למרות שיש הרבה JVMs זמינים, אורקל HotSpot הוא ללא ספק הנפוץ ביותר מכיוון שהוא מציע קבוצה חזקה ובוגרת של אפשרויות איסוף אשפה.

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

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

ספרות הפוכות של פיתון שלם

עכשיו בואו נראה מהם הסוגים השונים של קולטי אשפה.

סוגי אספן האשפה

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

ישנם כלומר 4 סוגים של אספני אשפה.

  • אספן אשפה סדרתי (GC) :כל אירועי איסוף האשפה מתנהלים באופן סדרתי בחוט אחד. הדחיסה מתבצעת לאחר כל איסוף אשפה.
  • מקביל / תפוקה GC: חוטים מרובים משמשים לאיסוף אשפה קטנה / קטנה. חוט יחיד משמש לאיסוף אשפה גדול ודחיסת הדור הישן. כמו כן, הגרסה המקבילה משתמשת בחוטים מרובים לאיסוף אשפה גדול ודחיסת הדור הישן.
  • אספן CMS :אשכולות מרובים משמשים לאיסוף אשפה קטן / מינורי באמצעות אותו אלגוריתם כמו Parallel. עיקר אוסף האשפה הוא רב-הברגה, אך CMS פועל במקביל יחד עם תהליכי היישום כדי למזער אירועי יישום. לא מבוצעת דחיסה.
  • אספן G1 :אספן האשפה הזה מיועד בעצם כתחליף ל- CMS. זה מקביל ובמקביל כמו CMS, אבל זה עובד אחרת לגמרי בהשוואה לאספני הזבל הוותיקים.

בואו להבין את היתרונות של איסוף זבל בג'אווה.

יתרונות

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

שיטות עבודה מומלצות

הגישה הטובה ביותר להסתגל לאוסף הזבל של ג'אווה היא על ידי הצבת דגלים ב- JVM. לדגלים יש את היכולת להתאים את קולט האשפה לשימוש. זה עוזר בהפיכתו למתאים ביותר לעיבוד גב גב שבו מקבלים הפסקות ארוכות לאיסוף אשפה.

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

בואו נסתכל על תוכנית זו.

class Edureka {int a int b public void setData (int c, int d) {a = cb = d} public void showData () {System.out.println ('Value of a =' + a) System.out.println ('Value of b =' + b)} main public static public (ארגומנטים מחרוזת []) {Edureka e1 = Edureka new () Edureka e2 = Edureka () e1.setData (1,2) e2.setData (3, 4) e1.showData () e2.showData () // Edureka e3 // e3 = e2 //e3.showData () // e2 = null //e3.showData () // e3 = null //e3.showData ()}}

במקרה זה, השנייםנוצרים אובייקטים ושני משתני הפניה. אם אתה מוסיף פקודה נוספת e3 = Null,שני משתני התייחסות יצביעו על אותו אובייקט. ואם אין התייחסות למשתנה, e3 = e2e3.showData () בשלב זה, אין התייחסויות המצביעות על האובייקט והוא הופך להיות כשיר לאיסוף אשפה.

זה מביא אותנו לסוף המאמר 'אוסף זבל בג'אווה'. למדנו כיצד להסיר חפצים שאינם בשימוש בערמה ואת סוגי האוסף השונים.

כיצד להתקין Hadoop בלינוקס - -

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

יש לך שאלה עבורנו? אנא הזכיר זאת בסעיף ההערות של 'אוסף הזבל בג'אווה' ' ונחזור אליך בהקדם האפשרי.