4. Threads (deamon,non-deamon)
• Daemon thread JVM’nin kendi içerisinde garbage collection (çöp toplama)
gibi amaçlar için kullanılır
• Non-daemon thread ise bizim programımızda çalışan threadlerdir
5. JVM’e yüklenen
classların
Meta datalarını
Tutar. Perm gen
Memorynin
Bir parçasıdır.
JVM Block Diagram
Threadler çalışırken
kullanılan class
instancelerinin
tutulduÄŸu alan
Threadlerlerin
method invocationlarında
Kullandıkları
geçici memory alanı
6. Heap Nedir?
• Java Heap JVM tarafından oluşturulur ve çeşitli hafıza
alanlarından oluşur
• Eden – new operatörü ile oluşturulan tüm nesneler önce bu hafıza
alanında oluşturulur.
• Survivor – nesneler old heap hafıza alanına transfer edilmeden
önce bir müddet survivor hafıza alanlarında kalır. Buradaki amaç
kısa ömürlü olan nesnelerin Garbage Collector tarafından
toplanmasına ve old heap alanına geçmelerini engellemektir.
• Old – uzun ömürlü nesnelerin ölene kadar kaldıkları hazıfa alanıdır.
• Permanent – sınıfların ve statik değerlerin yer aldığı hazıfa alanıdir.
JVM’in ihtiyacı olan metadatayı tutar. Heap memorynin bir parçası
değildir. Perm gen objeler full gc yapıldığında temizlenir.
7. JVM Memory Parametreleri
Switch Description
-Xms Sets the initial heap size for when the JVM starts.
-Xmx Sets the maximum heap size.
-Xmn Sets the size of theYoung Generation.
-XX:PermSize Sets the starting size of the Permanent Generation.
-XX:MaxPermSize
Sets the maximum size of the Permanent
Generation
9. Stack Nedir?
• Metodlar , metodlara gönderdiğimiz
parametreler , local primitive tipler
ve local referanslar(object
referance) bulunur
• Eğer primitive değişken class
içerisindeyse Heap memory
de, metod
içerisindeyse Stackmemory de
tutulur
10. Her threadin kendine ait stack alanı vardır.
Bir method çağrıldığında oluşan geçici datalar bir stack frame içinde tutulur
11. Garbage Collection
• Farklı JVM implementasyonları için farklı teknikler kullanır, standart bir tanımı
yoktur
• Temel görevi kullanimi son bulmus, hiçbir nesne örnegi tarafindan referans
gösterilmeyen, bellek bölgelerini tesipit edip o bölgelerdeki bellek alanini
bosaltmaktir
• Eğer kullanılmayan nesneler tespit edilip boşaltamazsa memory leak(bellek sızıntısı
oluÅŸur)
• GC’nin ne zaman calisacagi JVM’in kontrolundedir