Sobes.tech
Middle

სინიშნული ტიპები სად ინახება და რა ხდება მათთან პროგრამის მუშაობის დროს?

sobes.tech AI

პასუხი AI-სგან

რეფერენციული ტიპები ინახება heap-ში.

აპლიკაციის მუშაობის დროს ხდება შემდეგი:

  1. შექმნა: როდესაც ქმნიან რეფერენციულ ტიპის ობიექტს (მაგალითად, new MyClass()), ამ ობიექტისთვის მეხსიერება გამოყოფილი ხდება heap-ში. ცვლადი, რომელიც მას შეიცავს, ინახავს ამ მეხსიერების ნაწილზე მითითებას.
  2. წვდომა: ობიექტის ველებსა და მეთოდებს ამ მითითების საშუალებით ვუკავშირდებით.
  3. მტვრის შეგროვება (Garbage Collection): როდესაც ობიექტი აღარ არის ხელმისაწვდომი პროგრამის აქტიური ნაწილისგან (არ არის მისამართები მისთვის), მტვრის შეგროვებელი შეუძლია გაათავისუფლოს მისი მეხსიერება heap-ში. ეს პროცესი ავტომატურად ხდება "ფონზე" და არ საჭიროებს გამჭვირვალე ჩარევას პროგრამისტის მხრიდან. მტვრის შეგროვებელი პერიოდულად სკანირებს heap-ს, პოულობს მიუწვდომელ ობიექტებს და აბრუნებს მათ მეხსიერებას სისტემას.
  4. ცვლილება: ობიექტის შიგთავსი heap-ში შეიძლება შეიცვალოს. თუ რამდენიმე მითითების ცვლადი მიუთითებს ერთ ობიექტზე, მისი მდგომარეობის ცვლილებები სხვა საშუალებებითაც ჩანს.
  5. მითითების გადაყვანა: მითითების ცვლადი შეიძლება გადაყვანილ იქნას სხვა ობიექტზე ან null-ზე.

მაგალითი:

// String ობიექტის შექმნა (სტრიქონები - მითითების ტიპი) heap-ში
String myString = "Hello";

// myString_2 ცვლადი მიუთითებს იმავე ობიექტზე
String myString_2 = myString;

// ახალი String ობიექტის შექმნა heap-ში და მითითების გადაყვანა
myString = "World";

// ახლა myString სხვა ობიექტზე მიუთითებს, ხოლო myString_2 ისევ ძველზე