Sobes.tech
Middle

İstinad tipləri harada saxlanılır və tətbiq işləyərkən onlarla nə baş verir?

sobes.tech Süni İntellekt

AI-dan cavab

İstinad tipləri yerdə (Heap) saxlanılır.

Tətbiqin işləmə zamanı aşağıdakı hadisələr baş verir:

  1. Yaradılması: İstinad tipli obyekt yaradıldıqda (məsələn, new MyClass()), bu obyekt üçün yaddaş yerdə ayrılır. Onu saxlayan dəyişən bu yaddaş sahəsinə istinad edir.
  2. Əlçatanlıq: Objektdəki sahələr və metodlara giriş bu istinad vasitəsilə həyata keçirilir.
  3. Tullantıların toplanması (Garbage Collection): Bir obyekt artıq aktiv proqram hissəsindən əlçatan deyilsə (ona istinadlar yoxdursa), tullantıların toplayıcısı onun yaddaşını boşalda bilər. Bu proses avtomatik "arxa planda" baş verir və proqramçı tərəfindən açıq müdaxilə tələb etmir. Tullantıların toplayıcısı müntəzəm olaraq yerdə skan edir, əlçatan olmayan obyektləri tapır və yaddaşını sistemə geri verir.
  4. Dəyişiklik: Objektdəki məzmun dəyişə bilər. Əgər bir neçə istinad dəyişəni eyni obyektə işarə edirsə, onun vəziyyətindəki dəyişikliklər digər dəyişənlər vasitəsilə görünəcək.
  5. İstinadın yenidən təyin edilməsi: İstinad dəyişəni başqa obyektə və ya null-a təyin oluna bilər.

Nümunə:

// Heap-də String obyekti yaradılması (sətirlər - istinad tipi)
String myString = "Hello";

// myString_2 dəyişəni eyni obyektə istinad edir
String myString_2 = myString;

// Heap-də yeni String obyekti yaradılması və istinadın yenidən təyin edilməsi
myString = "World";

// İndi myString başqa obyektə istinad edir və myString_2 köhnə obyektə istinad edir