Sobes.tech
Junior — Middle

Java virtual mashinasida Stack va Heap xotira maydonlari o'rtasidagi asosiy farqlarni tushuntiring

sobes.tech AI

AIdan javob

Java Virtual Mashinasi xotirasi ikki asosiy hududga bo'linadi: Stack (stak) va Heap (yig'indi).

  • Stack (stak) — bu xotira hududi bo'lib, unda metodlarning mahalliy o'zgaruvchilari va funksiyalar chaqirilishi haqida ma'lumotlar (stack ramkalar) saqlanadi. Har bir oqimning o'z staki bor. Stackdagi ma'lumotlarga kirish juda tez, xotira metodlarga kirish va chiqishda avtomatik ravishda ajratiladi va bo'shatiladi. Stackda primitiv turlar va ob'ektlarga havolalar saqlanadi.

  • Heap (yig'indi) — bu xotira hududi bo'lib, unda dinamik tarzda new operatori yordamida yaratilgan ob'ektlar va massivlar joylashadi. Heap barcha oqimlar uchun umumiy bo'lib, xotira boshqaruvi bu yerda garbage collector (axlat yig'uvchi) tomonidan amalga oshiriladi. Yig'indagi ob'ektlar ular uchun havolalar mavjud bo'lsa, yashaydi.

Qisqacha:

  • Stack: tez kirish, mahalliy o'zgaruvchilar va metod chaqiruvlarini saqlaydi, hajmi cheklangan.
  • Heap: ob'ektlarni saqlaydi, garbage collector tomonidan boshqariladi, odatda kattaroq va dinamik.

Misol:

public void misol() {
    int a = 10; // a o'zgaruvchisi stackda saqlanadi
    MyObject obj = new MyObject(); // obj havolasi stackda, ob'ekt heapda
}