Yığın Bellek nedir?
Java'da yığın, yöntemler, yerel değişkenler ve referans değişkenleri içeren bir bellek bölümüdür. Yığın belleğine her zaman Son Giren İlk Çıkar sırasına göre başvurulur. Yığın içinde yerel değişkenler oluşturulur.
Yığın Bellek nedir?
Öbek, Nesneleri içeren ve aynı zamanda referans değişkenleri de içeren bir bellek bölümüdür. Örnek değişkenleri yığın içinde oluşturulur
Java'da Bellek Tahsisi
Java'da Bellek Tahsisi , yapıların ve sınıfların değişkenlerini ve örneklerini depolamak için bir programda sanal bellek bölümlerinin bir kenara bırakıldığı işlemdir. Ancak, bellek bildirimde bir nesneye tahsis edilmez, sadece bir referans oluşturulur. Nesnenin bellek tahsisi için new () yöntemi kullanılır, bu nedenle nesne her zaman öbek üzerinde bellek tahsis edilir.
Java Bellek Tahsisi aşağıdaki bölümlere ayrılmıştır:
- Yığın
- Yığın
- Kod
- Statik
Bu bellek bölümü, etkin yönetimi için gereklidir.
- Kod bölüm içeren bayt kodu .
- Yığın bellek bölümü içeren yöntemleri, yerel değişkenler ve referans değişkenleri.
- Yığın bölümü içeren Nesneleri (aynı zamanda, referans değişken içerebilir).
- Statik bölüm içeren statik veri / yöntem .
Yerel ve Örnek Değişkeni arasındaki fark
Örnek değişkeni bir sınıf içinde bildirilir, ancak bir yöntem içinde bildirilmez
class Student{int num; // num is instance variablepublic void showData{}
Yerel değişken , yöntem bağımsız değişkenlerini içeren bir yöntem içinde bildirilir .
public void sum(int a){int x = int a + 3;// a , x are local variables;}
Yığın ve Yığın Arasındaki Fark
Videoya erişilemiyorsa burayı tıklayın
Bunu daha iyi anlamak için bir örnek alalım.
M1 yöntemini çağıran ana yönteminizin
public void m1{int x=20}
Java yığınında, m1 yönteminden bir çerçeve oluşturulacaktır.
M1'deki X değişkeni de yığındaki m1 için çerçevede oluşturulacaktır. (Aşağıdaki resme bakın).
Yöntem m1, yöntem m2'yi çağırıyor. Java yığınında, m1 çerçevesinin üstünde m2 için yeni bir çerçeve oluşturulur.
Değişken b ve c aynı zamanda bir yığındaki m2 çerçevesinde de oluşturulacaktır.
public void m2(int b){boolean c;}
Aynı yöntem m2, m3 yöntemini çağırmaktadır. Yine yığının tepesinde bir çerçeve m3 oluşturulur (aşağıdaki resme bakın).
Şimdi, m3 metodumuzun iki örnek değişken int p ve int q olan "Account" sınıfı için bir nesne yarattığını varsayalım.
Account {Int p;Int q;}
İşte m3 yöntemi için kod
public void m3(){Account ref = new Account();// more code}
New Account () ifadesi, yığın içinde bir hesap nesnesi yaratacaktır.
Referans değişkeni "ref" bir yığın java içinde oluşturulacaktır.
Atama operatörü, Öbek içindeki nesneyi işaret etmek için bir referans değişkeni oluşturacaktır.
Yöntem yürütmeyi tamamladığında. Kontrol akışı, arama yöntemine geri dönecektir. Bu durumda yöntem m2'dir.
M3 yöntemindeki yığın yıkanacaktır.
Referans değişkeni artık öbekteki nesneyi göstermeyeceğinden, çöp toplama için uygun olacaktır.
Metot m2 uygulamasını tamamladıktan sonra. Yığının dışına çıkacak ve tüm değişkeni boşaltılacak ve artık kullanılamayacak.
Aynı şekilde m1 yöntemi için.
Sonunda, kontrol akışı programın başlangıç noktasına dönecektir. Bu genellikle "ana" yöntemdir.
Peki ya Object'in örnek değişkeni olarak bir referansı varsa?
public static void main(String args[]) {A parent = new A(); //more code } class A{ B child = new B(); int e; //more code } class B{ int c; int d; //more code }
Bu durumda, "child" referans değişkeni yığın içinde yaratılacaktır ve bu da, aşağıda gösterilen diyagram gibi, nesnesine işaret edecektir.
Özet:
- Bir yöntem çağrıldığında, yığının en üstünde bir çerçeve oluşturulur.
- Bir yöntem yürütmeyi tamamladığında, kontrol akışı çağırma yöntemine döner ve karşılık gelen yığın çerçevesi temizlenir.
- Yığın içinde yerel değişkenler oluşturulur
- Örnek değişkenleri yığın içinde oluşturulur ve ait oldukları nesnenin bir parçasıdır.
- Yığın içinde referans değişkenler oluşturulur.