Sobes.tech
Middle

Որտե՞ղ են պահվում հղման տիպերը և ինչ է տեղի ունենում նրանց հետ ծրագրի գործարկման ժամանակ։

sobes.tech AI

Պատասխան AI-ից

Ռեֆերենցիայի տիպերը պահվում են heap-ում:

Դիմումի գործարկման ժամանակ տեղի է ունենում հետևյալը:

  1. Ստեղծում: Երբ ստեղծվում է ռեֆերենցիայի տիպի օբյեկտ (օրինակ, new MyClass()), այդ օբյեկտի համար հիշողությունը հատկացվում է heap-ում: Փոփոխականը, որը պահում է այն, պահում է այդ հիշողության հատվածի հղումը:
  2. Մուտք: Օբյեկտի դաշտերին և մեթոդներին մուտքը կատարվում է այդ հղումով:
  3. Ջամփինգ (Garbage Collection): Երբ օբյեկտը այլևս հասանելի չէ ծրագրի ակտիվ մասից (չկա հղում դեպի այն), ջամփինգը կարող է ազատել այն զբաղեցրած հիշողությունը: Այս գործընթացը ավտոմատ կերպով կատարվում է "հետևի պլանում" և չի պահանջում բացահայտ միջամտություն ծրագրավորողի կողմից: Ջամփինգը պարբերաբար սկանավորում է heap-ը, գտնում անչափ հասանելի օբյեկտները և վերադարձնում նրանց հիշողությունը համակարգին:
  4. Փոփոխություն: Օբյեկտի պարունակությունը heap-ում կարող է փոխվել: Եթե մի քանի հղումային փոփոխականներ ցույց են տալիս նույն օբյեկտին, նրա վիճակի փոփոխությունները տեսանելի կլինեն մյուսների միջոցով:
  5. Հղման վերա նշանակում: Հղումային փոփոխականը կարող է վերա նշանակվել այլ օբյեկտի կամ null-ի:

Օրինակ:

// String օբյեկտի ստեղծում (շղթաներ - ռեֆերենցիայի տիպ) heap-ում
String myString = "Hello";

// myString_2 փոփոխականը ցույց է տալիս նույն օբյեկտին
String myString_2 = myString;

// Նոր String օբյեկտ ստեղծում heap-ում և հղման վերա նշանակում
myString = "World";

// Այժմ myString ցույց է տալիս այլ օբյեկտ, իսկ myString_2 շարունակում է ցույց տալ հինին