Java-da Stack və Heap yaddaş
Java
1
Yazı
1
Yazarlar
21
Baxış
-
Java proqramlarında yaddaş idarəetməsi iki əsas sahədə həyata keçirilir: Stack və Heap. Hər iki sahə yaddaşın müxtəlif məqsədlər üçün istifadəsini təmin edir və fərqli xüsusiyyətlərə malikdir.
Stack Yaddaşı:
- Məqsədi: Metod çağırışları, lokal dəyişənlər və metodlara aid məlumatların saxlanması üçün istifadə olunur.
- Xüsusiyyətləri:
- Struktur: LIFO (Last-In-First-Out) prinsipi ilə işləyir, yəni son daxil olan ilk çıxır.
- Yaddaşın İdarə Edilməsi: Yaddaş avtomatik olaraq idarə olunur; metod tamamlandıqda, ona aid yaddaş avtomatik sərbəst buraxılır.
- Sürət: Stack yaddaşına giriş sürətlidir və kiçik ölçülü olduğundan cache üçün uyğundur.
- Məhdudiyyətlər: Yaddaş həcmi məhduddur və böyük məlumatların saxlanması üçün uyğun deyil. Stack yaddaşının dolması Stack Overflow xətasına səbəb ola bilər.
Heap Yaddaşı:
- Məqsədi: Dinamik olaraq yaradılan obyektlərin və classların saxlanması üçün istifadə olunur.
- Xüsusiyyətləri:
- Struktur: Təsadüfi şəkildə təşkil olunmuşdur və obyektlər yaddaşın müxtəlif yerlərində yerləşə bilər.
- Yaddaşın İdarə Edilməsi: Yaddaşın idarə edilməsi Garbage Collector tərəfindən həyata keçirilir; istifadə olunmayan obyektlər avtomatik olaraq sərbəst buraxılır.
- Sürət: Heap yaddaşına giriş nisbətən yavaşdır və fragmentasiya problemi yarana bilər.
- Məhdudiyyətlər: Yaddaşın əl ilə idarə edilməsi çətindir və yaddaş sızmalarına səbəb ola bilər.
Java-da Stack və Heap yaddaşının istifadəsinə misal:
public class YaddasTest { public static void main(String[] args) { int a = 10; // Stack yaddaşında saxlanılır YaddasTest nesne = new YaddasTest(); // Heap yaddaşında saxlanılır nesne.metod(); } public void metod() { int b = 20; // Stack yaddaşında saxlanılır // Əlavə əməliyyatlar } }
Yuxarıdakı nümunədə:
int a = 10;
ifadəsi ilə yaradılana
dəyişəni Stack yaddaşında saxlanılır.YaddasTest nesne = new YaddasTest();
ifadəsi ilə yaradılannesne
obyekti Heap yaddaşında saxlanılır.metod()
daxilindəkib
dəyişəni də Stack yaddaşında saxlanılır.
Stack və Heap yaddaşının müqayisəsi:
- Yaddaşın ölçüsü: Stack yaddaşı məhduddur və kiçik ölçülüdür, Heap yaddaşı isə daha böyükdür.
- Yaddaşın idarə edilməsi: Stack yaddaşı avtomatik idarə olunur, Heap yaddaşı isə Garbage Collector tərəfindən idarə edilir.
- Performans: Stack yaddaşına giriş daha sürətlidir, Heap yaddaşına giriş isə nisbətən yavaşdır.
- Fragmentasiya: Heap yaddaşında fragmentasiya problemi yarana bilər, Stack yaddaşında isə bu problem yoxdur.
Bu fərqlər nəzərə alınaraq, Java proqramlarında yaddaşın effektiv idarə edilməsi mümkündür.
Bilik paylaşdıqca artan bir sərvətdir