אי הבידוד בג'אווה

אי הבידוד בג'אווה

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

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

דוּגמָה:

Java
   // Java Program to Illustrate Island of Isolation   // Main class   public     class   GFG     {      GFG     i  ;      // Method 1      // Main driver method      public     static     void     main  (  String  []     args  )      {      // Creating object of class inside main() method      GFG     t1     =     new     GFG  ();      GFG     t2     =     new     GFG  ();      // Object of t1 gets a copy of t2      t1  .  i     =     t2  ;      // Object of t2 gets a copy of t1      t2  .  i     =     t1  ;      // Till now no object eligible      // for garbage collection      t1     =     null  ;      // Now two objects are eligible for      // garbage collection      t2     =     null  ;      // Calling garbage collector      System  .  gc  ();      }      // Method 2      // overriding finalize() Method      @Override     protected     void     finalize  ()     throws     Throwable      {      // Print statement      System  .  out  .  println  (  'Finalize method called'  );      }   }   

תְפוּקָה:



אי הבידוד בג

הסבר פלט:  

  • לפני השמדת אובייקט, אספן זבל קורא לשיטת finalize לכל היותר פעם אחת על אותו אובייקט. הסיבה לכך היא ששיטת finalize() נקראת פעמיים בדוגמה שלמעלה, מכיוון ששני אובייקטים כשירים לאיסוף אשפה. הסיבה לכך היא שאין לנו הפניות חיצוניות לאובייקטים t1 ו-t2 לאחר ביצוע t2=null.
  • כל מה שיש לנו זה רק הפניות פנימיות (שהוא למשל משתנה i של Class Test) אליהם אחד של השני. אין שום דרך שנוכל לקרוא למשתנה מופע של שני האובייקטים. אז לאף אחד מהאובייקטים לא ניתן לקרוא שוב עד ' t2.i  =  t1 '
אי הבידוד בג
  • לשני האובייקטים יש הפניות חיצוניות t1 ו-t2.
  • t1 = אפס: ניתן להגיע לשני האובייקטים דרך t2.i ו-t2 בהתאמה. t2 = null: אין דרך להגיע לאף אחד מהאובייקטים. 
     

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


מאמרים למעלה

קטגוריה

מאמרים מעניינים