Sobes.tech
Junior — Middle

Тавзеҳ диҳед фарқиятҳои асосии байни минтақаи хотира Stack ва Heap дар мошини виртуалии Java

sobes.tech AI

Ҷавоб аз AI

Java Виртуал Машинаси хотирани икки асосий ҳудудга бўлади: Stack (стек) ва Heap (хўпир).

  • Stack (стек) — бу хотиранинг бир ҳудуди бўлиб, унда методларнинг маҳаллий ўзгарувчилари ва функция чақиришлари ҳақида маълумотлар (стек рамкалари) сақланади. Ҳар бир ишчи тўрда ўзининг стеки бор. Стекдаги маълумотларга кириш жуда тез, хотира автоматик равишда ажратилади ва чиқарилади методларга кириш ва чиқишда. Стекда primitives турлари ва объектларга ишоралар сақланади.

  • Heap (хўпир) — бу хотиранинг бир ҳудуди бўлиб, унда динамик равишда new оператори орқали яратилган объектлар ва массивлар жойлашади. Хўпир барча ишчи тўрлар учун умумий бўлиб, хотира бошқаруви бу ерда garbage collector (хўпир йиғувчи) томонидан амалга оширилади. Объектлар хўпирда уларга ишоралар бўлганча яшайди.

Қисқача:

  • Stack: тез кириш, маҳаллий ўзгарувчилар ва метод чақиришларини сақлайди, ҳажми чекланган.
  • Heap: объектларни сақлайди, garbage collector томонидан бошқарилади, одатда каттароқ ва динамик.

Масалан:

public void мисол() {
    int a = 10; // a ўзгарувчиси стекте сақланади
    MyObject obj = new MyObject(); // ишора obj стекте, объект хўпирда
}