Kategoriler
Java

JVM Nasıl Çalışır?

JVM Nasıl Çalışır? Başlığını açıklamak, JVM’in detaylarına ne kadar girildiğine bağlı olarak saatler sürebilir. Bu yazıda ana hatları ile kısa ve basit bir giriş yapmaya çalışacağız. JVM Nasıl Çalışır?’ı çok daha detaylı anlamak isteyenler için gerekli kaynakları da paylaşacağım.

JVM Nasıl Çalışır? Başlığını açıklamak, JVM‘in detaylarına ne kadar girildiğine bağlı olarak saatler sürebilir. Bu yazıda ana hatları ile kısa ve basit bir giriş yapmaya çalışacağız. JVM Nasıl Çalışır?‘ı çok daha detaylı anlamak isteyenler için gerekli kaynakları da paylaşacağım.

JVM Nasıl Çalışır? konusuna geçmeden, JDK Nedir? JRE Nedir? JVM Nedir? gibi konuları ele aldığımız yazıyı okumanızı tavsiye ederim.

JVM (Java Sanal Makinesi)

Hiç WORA hakkında bir şey duydunuz mu? (Bir kez yazın, her yerde çalıştırın). Java uygulamaları platform bağımsız çalışabildiği için WORA sloganıyla yola çıkmıştır. Bunu da JVM sayesinde başarmıştır.

Akış:

  • Java’da derleme ve yorumlama süreçlerinin ikisi de vardır.
  • Java ile yazılmış kod , JDK (Derleyici/Compiler) tarafından bayt kodlarına dönüştürülür.
  • Bayt kodlar daha sonra JVM tarafından makine koduna dönüştürülür.
  • Makine kodu doğrudan işlemci (CPU) tarafından yürütülür.
java-jdk-jre-jvm-nedir
JVM Nasıl Çalışır?

JVM, Java programlarını çalıştırmak için kullanılan JRE’in bir parçasıdır. JRE de geliştirme yapmak için kullanılan JDK’nın bir parçasıdır. JVM bayt kodunu, Java programının çalıştığı ortama göre makine koduna çeviren bir yorumlayıcı/interpreter’dır. JVM Nedir?‘in cevabı için linkteki yazıyı okuyabilirsiniz. Bu yazıdaki konumuz JVM’in Nasıl Çalıştığı ile ilgili.

___

JVM Nasıl Çalışır?

JVM Mimarisini ana hatları ile basitçe tanıyarak ve hızlıca üzerinden geçerek JVM’in nasıl çalıştığını kabaca anlamış olacağız.

JVM Mimarisi

JVM‘i, aşağıdaki görselde olduğu gibi üç bölüm olarak ele alabiliriz. Class LoaderJVM Memory ve Execution Engines.

1. Class Loader

Sınıf yükleyici, JVM’nin bir alt sistemidir. Byte kod halindeki (.class) sınıf dosyaları‘nı yüklemek için kullanılır. Java programını her çalıştırdığımızda, önce sınıf yükleyici programı yükler.

2. JVM Memory

Method Area

Metod alanı: Sınıflara ait verilerinin depolandığı alandır. Sınıf Adı, Değişkenler, Bloklar, Metotlar vs. bu alanda depolanır.

Heap Area

Yığın alanı: Nesnelere ait verilerinin depolandığı alandır. Nesne Referansları gibi bilgileri tutar.

Stack Area

Yığın alanı (heap ve stack ikisi de yığın anlamında türkçe): Her iş parçacığı için bir runtime(çalışma zamanı) yığınının oluştuğu alandır. Sınıfın tüm statik olmayan değişkenleri!nin depolandığı alandır. Adresleri ise heap üzerindeki nesnelerin referansı ile belirtilir. Yanı sıra; Yerel Değişkenler, kısmi sonuçlar(partial results), metot çağrıları ve returnler‘i depolar.

PC Register(s)

Bilgisayar Kayıtları: O anda ilişkili iş parçacığında yürütülmekte olan talimatın adresini içerir. PC Kaydı çok küçük bir veri alanıdır ve sabit bir boyuta sahiptir. Java uygulamalarının içeriği ve boyutu üzerinde herhangi bir etkisi yoktur. Bir iş parçacığının geçerli yürütme talimatının adresini saklar.

Native Method Stack(s) 

Her bir iş parçacığı için ayrı yığın oluşturulur. JVM Yığını (Stack Area) ile benzer veri öğelerini depolar ve yerel (Java dışı) metotların çalıştırılmasına yardımcı olmak için kullanılır.

Bu aşama da her *.class dosyalarını satır satır okur ve çalıştırır.3 aşaması vardır.

3. Execution Engine

Interpreter 

Yorumlayıcı: Bayt kodu satır satır yorumlar ve makine koduna çevirir. Buradaki dezavantaj, program her çağrıldığında veya çalıştırıldığında, tekrar yorumlama gerekliliğidir.

JIT (Just In Time) Compiler

JIT Derleyici: Verimliliğini artırmak için kullanılır. Tüm bayt kodunu derleyip makine koda çevirir. Interpreter/Yorumlayıcı ile çok tekrarlanan kod parçacığı gözlemlediğinde, JIT bu tarz kodları doğrudan makine koduna çevirir. Böylece yeniden yorumlamak gerekmediği için verimlilik artmış olur.

Garbage Collector

Çöp toplayıcı: Referans edilmemiş yani kullanılmayan nesneleri yok eder ve kodun daha performanslı çalışmasına yardımcı olur.

Bir Cevap Yazın