Java'da Bellek Tahsisi: 2022'de Bilmeniz Gereken Her Şey

Yayınlanan: 2021-01-10

Java'da bellek ayırma , bilgisayar programlarının ve hizmetlerinin sanal bellek alanlarına tahsis edildiği süreci ifade eder. Java Sanal Makinesi, belleği Yığın ve Yığın Belleğe böler. Java Sanal Makinesi için, bir uygulamayı maksimum potansiyelinde yürütmek yığın ve yığın belleğinden gerçekleşebilir. Her yeni bir değişken veya nesne bildirildiğinde, bellek bu tür işlemlere ayrılmış bellek ayırır.

İçindekiler

Yığın Bellek

Java'daki Stok Bellek tahsisi, statik bellek ve iş parçacığı yürütme için kullanılır. Bu bellekte bulunan değerler geçicidir ve Son Giren İlk Çıkar tarzında başvurulmaya devam ettikleri için belirli yöntemlerle sınırlıdır.

Bellek çağrılır ve yığın belleğinde yeni bir blok oluşturulur oluşturulmaz, yığın belleği, yöntem bitene kadar ilkel değerleri ve referansları tutar. Bitişinden sonra blok temizlenir ve yeni bir işlemin gerçekleşmesi için hazırdır. Genel olarak, yığın belleğinin toplam boyutu, yığın belleğinin boyutuyla önemsizdir.

Swiggy, Quora, IMDB ve daha fazlası gibi uygulamalar oluşturmayı öğrenin

Yığın Belleğin Özellikleri

Java Sanal Makinesi'ndeki (JVM) bellek ayırmanın farklı bölümlerine dayalı olarak , yığın belleğinin ayrık özelliklerinden bazıları şunlardır:

  • Yığın belleği, herhangi bir yeni yöntem çağrıldığında ve buna göre döndürüldüğünde büyüyebilir veya daralabilir.
  • Yığındaki herhangi bir değişken, yöntemin kapsamı var olduğu sürece çalışabilir.
  • Bir yöntem yürütülürken otomatik tahsis ve serbest bırakma alır.
  • Tam bellek durumunda, java.lang.StackOverFlowError başlar.
  • Heap belleğe kıyasla erişimde daha hızlıdır.

Okuyun: Full-Stack vs. Yazılım Mühendisi: Hangisini Seçmelisiniz?

Java'da yığın bellek ayırmada kullanılan yöntemler

  • Object push(Object element): Burada, bir öğe yığının en üstüne itilir.
  • Object pop(): Yığının en üstünde bulunan herhangi bir öğe temizlenir ve döndürülür. pop() çağrıldıkça bir yığının boş olması durumunda, istisna – EmptyStackException oluşur.
  • Object peek(): Burada, en üstteki eleman döndürülür ancak temizleme işlemine tabi tutulmaz.
  • Boolean empty(): Döngünün yığınında herhangi bir üst değer yoksa, işlev 1 (doğru), aksi halde 0 (yanlış) döndürür.
  • Aramada(Nesne öğesi): Bu, yığında bir nesnenin olup olmadığını anlamak için kullanılır. Değerin bulunması durumunda işlev, öğenin konumunu yığının tepesinden döndürür, aksi takdirde -1 döndürür.

Okuyun: Yeni Başlayanlar İçin Java Projeleri ve Konuları

Java yığın alanı

Esas olarak Java çalışma zamanı tarafından kullanılan Java Heap Space, içinde her nesne oluşturulduğunda ve tahsis edildiğinde devreye girer. Çöp Toplama gibi ayrık işlev, referans içermeyen önceki nesneler tarafından kullanılan belleği temizlemeye devam eder. Yığın Alanında oluşturulan bir nesne için uygulama genelinde ücretsiz erişime sahip olabilirsiniz.

Java'daki Bellek tahsisi , Yığın, Yığın, Kod ve Statik olmak üzere bölümlere ayrılmıştır.

Java Yığın Belleğinin Özellikleri

  • Young Generation, Old veya Tenured Generation ve Permanent Generation dahil olmak üzere karmaşık bellek yönetimi tekniğinden erişilebilir.
  • Yığın bellekte dolduğunda java.lang.OutOfMemoryError döndürür.
  • Bu belleğe erişim, yığın belleğe göre nispeten daha yavaştır.
  • Otomatik ayırmadan geçmez ve belleğin optimal aşamasında çalışması için yabancı nesneleri çıkarmak için Çöp Toplayıcı gibi benzer bir işlev gerektirir.

Java'daki yığın ve yığın bellek tahsisine bir örnek :

Kaynak

Yığın Alanı ve Yığın Belleği: Temel Farklılıklar

Yığın Alanı Belleği Yığın Bellek
Uygulamanın tüm bölümleri yığın belleğini çağırır. Yığın bellek yürütmesi tek bir iş parçacığıyla sınırlıdır.
Ne zaman bir nesne oluşturulsa, yığın alanında saklanır. Yığın belleği yalnızca referansını ve yerel ilkel değişkenlerini içerir.
Buradaki nesnelere uygulama genelinde global olarak erişilebilir. Diğer iş parçacıkları yığın bellek nesnelerine erişemez.
Burada hafıza genç ve yaşlı kuşaklara göre tanımlanmaktadır. Bellek yönetimi Son Giren İlk Çıkar temelinde gerçekleşir.
Bellek, uygulamanın kapsamına göre kalır. Bellek geçicidir.
- XMX ve XMS JVM gibi yöntemler, yığın belleğinin en uygun boyutunu tanımlamak için kullanılır. Yığın bellek için -XSS yöntemiyle belirlenir.
Burada, tam bellek durumunda Java.lang.OutOfMemoryError istisnası oluşur. Burada, java.lang.StackOverFlowError hatası , belleğin dolu olması durumunda ortaya çıkar.
Boyut daha fazladır ancak yığın belleğe kıyasla işlenmesi zaman alır. Sorunsuz LIFO işlemi için boyut daha küçüktür ancak yürütmede daha hızlıdır.

Ayrıca okuyun: Hindistan'da Java Geliştirici Maaşı

Dünyanın En İyi Üniversitelerinden Online Yazılım Kursları Öğrenin . Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.

Çözüm

Java'da bellek ayırma , temel olarak yığın ve yığın alanı olmak üzere iki şekilde gerçekleşir. Umarız tüm bunların sürecini anlamanıza yardımcı olmuştur.

Full-stack yazılım geliştirme hakkında daha fazla bilgi edinmek istiyorsanız, upGrad & IIIT-B'nin çalışan profesyoneller için tasarlanmış ve 500+ saatlik sıkı eğitim, 9+ proje sunan Full-stack Yazılım Geliştirmede Yönetici PG Programına göz atın. ve görevler, IIIT-B Mezunları durumu, pratik uygulamalı bitirme projeleri ve en iyi firmalarla iş yardımı.

Java'da bellek yönetimi nasıl gerçekleşir?

Java Sanal Makinesi (JVM), Java programlama dilinde yazılmış programları çalıştırmak için kullanılan bir bilgisayar programıdır. Bellek yönetimini verimli kullanma sürecini yapar. Ayrıca, işletim sisteminde bir çökme olsa bile JVM üzerinde çalışan programın etkilenmemesi için sağlam olacak şekilde tasarlanmıştır. Bellek yönetimi, bir bilgisayar sistemindeki her bellek parçasının (RAM) yönetilmesi anlamına gelir. JVM, gerektiğinde belleğin tahsis edilmesini ve serbest bırakılmasını izler. Bir program belleğe yüklenir yüklenmez, JVM onun için bellek alanı ayırır. Bu işleme yığın denir. Yığın, uygulamanın birçok bölümü için ortak bir bellek alanıdır.

Java'da Çöp Toplama Nedir?

Java Sanal Makinesi (JVM), Java nesnelerinin sayısını izlemek için referans sayımını kullanır. Herhangi bir nesne toplanmadan önce, bu nesneye yapılan referansların sayısı sıfıra ulaşmalıdır. Kullanıcı programı, finalize() yöntemini çağırarak nesneleri açıkça silebilir. Finalize, Object sınıfında Garbage Collector (GC) tarafından çağrılan statik bir yöntemdir. Finalize yöntemi, Garbage Collector bu nesneyle ilgilenmeden önce nesnenin tüm kaynaklarını serbest bırakacaktır. Çöp Toplayıcı, istenmeyen nesneleri temizleme işlemidir. Garbage Collector işlemi, Java çalışma zamanı sistemi Java yığınının neredeyse dolu olduğunu algıladığında tetiklenir. JVM'de her nesnenin bir bitmap'i vardır. Bitmap, her nesnenin kullanılıp kullanılmadığını takip etmesi için ayarlanır. Bitmap 0'a çevrildiğinde, GC bu nesneyle ilgilenecektir.

Java programlama dilinin özellikleri nelerdir?

Java Programlama Dili, uygulamalar ve uygulamalar oluşturmak için kullanılan genel amaçlı, üst düzey bir programlama dilidir. Java yazılımı, yeniden programlanmadan Java'yı destekleyen herhangi bir platformda çalışabilir. Java programlama dilinin özellikleri şunlardır: Nesneye yönelik özellikler, Sağlam, Yüksek Güvenlikli ve Platformdan Bağımsız, Maliyetsiz, Öğrenmesi ve Kullanımı Kolay. Java, platformdan bağımsız olan ve herhangi bir işletim sistemi veya platformda kullanılabilen nesne yönelimli bir programlama dilidir. Java, derlenmiş bir dildir ve daha sonra Java Sanal Makinesinde yürütülen bayt kodu üretilir.