2-modul · 7-dars: Memory Management

Daraja: O'rta

Memory Management. OOP bo‘yicha nazariya, amaliy namuna va mustaqil mashq.

Tushuntirish

## Dars maqsadi Memory Management tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.

## Nazariya Xotirani ajratish va bo'shatishni boshqarish. Java-da buni asosan JVM va Garbage Collector bajaradi.

Asosan: Stack, Heap, Method Area (Metaspace), PC Register va Native Method Stack.

## Intervyuga tayyorgarlik ### Memory Management nima? Xotirani ajratish va bo'shatishni boshqarish. Java-da buni asosan JVM va Garbage Collector bajaradi.

### Xotira turlari? Asosan: Stack, Heap, Method Area (Metaspace), PC Register va Native Method Stack.

### Qaysilari asosiy xotiralar? Stack va Heap.

### Stack xotira qanday xotira? Method chaqiruvlari, local o'zgaruvchilar va reference lar saqlanadigan LIFO xotira; har bir thread uchun alohida.

### Stack Frame nima? Har bir method chaqiruvi uchun stack da ajratiladigan blok (parametrlar, local o'zgaruvchilar).

### Stack xotirasining afzalliklari? Tez, method tugagach avtomatik tozalanadi, thread-safe.

### LIFO nima? Last In First Out — oxirgi kirgan birinchi chiqadi.

### StackOverflow qachon yuzaga keladi? Stack to'lib ketganda — masalan cheksiz yoki juda chuqur rekursiyada.

### Heap qanday qismlardan iborat? Young Generation (Eden + 2 Survivor) va Old (Tenured) Generation.

### Nursery Space nima? Young Generation — yangi obyektlar yaratiladigan hudud (Eden + Survivor).

### Nursery Space haqidagi muhim fikrlar? Ko'pchilik obyektlar shu yerda tez o'ladi; Minor GC bu yerda tez-tez ishlaydi va tirik qolganlar Old ga ko'chiriladi.

### Tenured Space nima? Uzoq yashagan obyektlar ko'chiriladigan Old Generation hududi.

### Permanent Generation nima? Eski JVM (Java 7 gacha) da class metadata saqlanadigan hudud (PermGen).

### Metaspace nima? Java 8 dan PermGen o'rniga kelgan, class metadata-ni native xotirada saqlaydigan hudud.

### Method Area nima? Class tuzilmasi, static o'zgaruvchilar va method kodi saqlanadigan mantiqiy hudud (amalda Metaspace da bo'ladi).

### Method Parameters-ning turlarini ayting. Java-da faqat pass-by-value bor (reference qiymati ham value sifatida uzatiladi); shuningdek Variable Arguments (varargs).

### Passing by Value nima? Argument qiymatining nusxasi method ga uzatiladi.

### Passing by Reference nima? Obyekt havolasining o'zi uzatiladi va asl obyekt o'zgartiriladi (Java-da bunday emas).

### Java-da passing by reference bormi? Yo'q. Java har doim pass-by-value. Faqat reference qiymati nusxalanadi, shuning uchun obyekt ichini o'zgartirish mumkin, lekin havolaning o'zini emas.

### Variable Arguments nima? Method ga o'zgaruvchan sonli argument berish imkoni: `void f(int... nums)`.

### Garbage Collector nima va uning vazifasi? Reference qolmagan (ishlatilmayotgan) obyektlarni avtomatik topib, xotirani bo'shatuvchi mexanizm.

### JVM Garbage Collector qanday bosqichlarni o'z ichiga oladi? Mark (ishlatilayotganlarni belgilash) va Sweep (belgilanmaganlarni o'chirish); ba'zan Compact (siqish).

### Sweeping turlari qanday? Oddiy sweep, compacting sweep (bo'sh joylarni siqib xotirani tartiblaydi) va copying (Young Generation da nusxalash).

## Versiya va aniqlik Java misollari Java 17 bazasiga mo‘ljallangan. JDK/JRE paketlash usuli distributivga bog‘liq; JVM bayt-kodni interpretatsiya va JIT orqali bajarishi mumkin. GC uchun aniq bajarilish vaqtiga kafolat yo‘q; finalization resurs yopish usuli emas. Thread stop/suspend/resume kabi eski metodlar amaliy yechim emas. Koddagi import, klass yoki tashqi kutubxona kontekstini tekshiring.

## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/2-module.md) [Rasmiy qo‘llanma](https://dev.java/learn/classes-objects/) [Sizning avvalgi savol-javob arxivingiz](https://lightyer.uz/java/interview.html)

Kod quyida o‘quv namunasi sifatida berilgan. To‘liq ilova uchun import, dependency va konfiguratsiya kerak bo‘lishi mumkin. SQLni faqat ajratilgan test bazasida bajaring.

Kod misoli

Object first = new Object();
Object second = first;
first = null;
System.out.println(second != null); // true
// Obyektga second orqali hali erishish mumkin.

Keng tarqalgan xatolar

Mashqlar

Teglar: pdp, modul-02, nazariya

Interaktiv ko'rinish (viktorina, izohlar, tarix)