Heap and Stack
Heap - JVM terefinden obyekt yaratmaq ucun iwlenilen yaddaw yeridir. Buna dynamic memory area da deyilir. Normalda stack - dan daha boyukdur.
Stack - LIFO(last in first out) prinsipi ile iwleyir. Stack proqramda o anda caliwan, aktiv olan metodlar ucun ayrilan yaddawdir. main-den davam ederek, cagrilan her yeni metod ucun stackda uste yeni bir pencere acilir. Metod iwini bitirende, onu cagiran metoda qayidarken stack-daki pencereleride silir. Stack-daki yaddaw pencereleri onun ucun acilan metodun parametrlerini local deyiwenlerini saxlayir. One gore de local variable -larina stack variable deyilir.
*** Bir variable eger obyektin bir hissesidirse yeni object variable - dirsa(field) bu zaman heap yaddawdadir. Yox eger local variable-dirsa stack yaddawdadir.
Mes:
Car car = new Car();
car.make = "Mercedes";
car.model = "C200";
int speed = car.speed;
Burada: speed, car - stackda yerlewir, Car obyekti ise heap yaddawdadir, hemcinin ona mensub olan make, model de heap da yerlewir.
Obyektin hissesi olan instance varialbe-lar tipden asili deyil daima heapda olur. Local variable-lar tipden asili olmadan daima stack yaddawda olur.
-----------------------------------------------------------------------------------------------------------------------------Application start olduqda klasslar haqqinda butun informasiya class loader terefinden metaspace yazilir. Metaspace Java memory-nin bir hissesidir. Java memory ozu 3 hisseye bolunur: stack, heap ve metaspace. Class variable(static) saxlanilacaq metaspace-de. Eger primitiv variable - dirsa o zaman hem ozu hem deyeri metaspacede saxlanilacaq. Eger reference variable-dirsa o zaman variable ozu metaspace-de lakin deyeri heap yaddawda saxlanilacaq.
-----------------------------------------------------------------------------------------------------------------------------
Комментарии
Отправить комментарий