Junior
Kde sa v pamäti ukladajú objekty?
sobes.tech AI
Odpoveď od AI
Objekty v pamäti sa ukladajú do zásobníka (stack).
Zásobník je staticky pridelená oblasť pamäti, ktorá sa používa na ukladanie lokálnych premenných a informácií o volaniach funkcií, a je automaticky spravovaná.
Objekty sa ukladajú do heap-u (hromady), čo je dynamicky pridelená oblasť pamäti, kde sa objekty umiestňujú počas behu programu. Veľkosť objektov nie je vopred známa a sú odstránené garbage collector-om.
Primitívne dátové typy (celé čísla, boolean hodnoty atď.) sa zvyčajne ukladajú do zásobníka (stack). Referencie na objekty (t.j. adresy v heap-u) sa ukladajú do zásobníka alebo do iných objektov v heap-u.
Príklad v Jave:
// Premenná primitivného typu (int) sa ukladá do zásobníka.
int count = 10;
// Referenčná premenná (myObject) sa ukladá do zásobníka.
// Samotný objekt MyObject sa vytvára v heap-u.
MyObject myObject = new MyObject();
// Primitívny typ vo vnútri objektu (id) sa ukladá ako časť objektu v heap-u.
myObject.setId(1);
// Referencia na iný objekt (anotherObject) vo vnútri myObject
// sa ukladá ako časť myObject v heap-u. AnotherObject je tiež v heap-u.
myObject.setRelatedObject(new AnotherObject());
class MyObject {
private int id; // uložené v heap-u (ako časť MyObject)
private AnotherObject relatedObject; // referencia uložená v heap-u
public void setId(int id) {
this.id = id;
}
public void setRelatedObject(AnotherObject relatedObject) {
this.relatedObject = relatedObject;
}
}
class AnotherObject {
// ...
}
Zhrnutie:
- Zásobník (stack): Primitívne typy, referencie na objekty.
- Heap: Samotné objekty, obsahujúce svoje polia (vrátane primitívnych typov vnútri objektov a referencií na iné objekty).