Middle
სინიშნული ტიპები სად ინახება და რა ხდება მათთან პროგრამის მუშაობის დროს?
sobes.tech AI
პასუხი AI-სგან
რეფერენციული ტიპები ინახება heap-ში.
აპლიკაციის მუშაობის დროს ხდება შემდეგი:
- შექმნა: როდესაც ქმნიან რეფერენციულ ტიპის ობიექტს (მაგალითად,
new MyClass()), ამ ობიექტისთვის მეხსიერება გამოყოფილი ხდება heap-ში. ცვლადი, რომელიც მას შეიცავს, ინახავს ამ მეხსიერების ნაწილზე მითითებას. - წვდომა: ობიექტის ველებსა და მეთოდებს ამ მითითების საშუალებით ვუკავშირდებით.
- მტვრის შეგროვება (Garbage Collection): როდესაც ობიექტი აღარ არის ხელმისაწვდომი პროგრამის აქტიური ნაწილისგან (არ არის მისამართები მისთვის), მტვრის შეგროვებელი შეუძლია გაათავისუფლოს მისი მეხსიერება heap-ში. ეს პროცესი ავტომატურად ხდება "ფონზე" და არ საჭიროებს გამჭვირვალე ჩარევას პროგრამისტის მხრიდან. მტვრის შეგროვებელი პერიოდულად სკანირებს heap-ს, პოულობს მიუწვდომელ ობიექტებს და აბრუნებს მათ მეხსიერებას სისტემას.
- ცვლილება: ობიექტის შიგთავსი heap-ში შეიძლება შეიცვალოს. თუ რამდენიმე მითითების ცვლადი მიუთითებს ერთ ობიექტზე, მისი მდგომარეობის ცვლილებები სხვა საშუალებებითაც ჩანს.
- მითითების გადაყვანა: მითითების ცვლადი შეიძლება გადაყვანილ იქნას სხვა ობიექტზე ან
null-ზე.
მაგალითი:
// String ობიექტის შექმნა (სტრიქონები - მითითების ტიპი) heap-ში
String myString = "Hello";
// myString_2 ცვლადი მიუთითებს იმავე ობიექტზე
String myString_2 = myString;
// ახალი String ობიექტის შექმნა heap-ში და მითითების გადაყვანა
myString = "World";
// ახლა myString სხვა ობიექტზე მიუთითებს, ხოლო myString_2 ისევ ძველზე