SlideShare a Scribd company logo
1 of 13
JVM veVisualVM
JVM’i anlayalım ve analiz edelim
Dilaver Demirel - 20150913
Başlıklar
• JVM Nedir?
• Threads (deamon,non-deamon)
• Heap Nedir?
• Stack Nedir?
• Garbage Collection nedir?
• Örnek Uygulama /VisualVM
JVM Nedir?
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
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ı
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.
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
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
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
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
GC Adımları
Kaynaklar
• http://www.artima.com/insidejvm/ed2/jvm2.html
• http://www.artima.com/insidejvm/ed2/gc.html
• http://serkansakinmaz.blogspot.com.tr/2013/08/java-da-stack-ve-heap-kavram.html
• https://docs.oracle.com/javase/8/docs/technotes/guides/visualvm/
• http://bilgehanarslan.com/jvm-nedir/
• http://jvmmemory.com/
• http://www.kurumsaljava.com/2015/01/08/jvm-stack-nedir-ve-nasil-calisir/
• http://javapapers.com/core-java/java-jvm-run-time-data-areas/#Method_Area
• http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html#t1s2
• http://www.journaldev.com/2856/java-jvm-memory-model-and-garbage-collection-monitoring-tuning

JVM ve VisualVm

  • 1. JVM veVisualVM JVM’i anlayalım ve analiz edelim Dilaver Demirel - 20150913
  • 2. Başlıklar • JVM Nedir? • Threads (deamon,non-deamon) • Heap Nedir? • Stack Nedir? • Garbage Collection nedir? • Örnek Uygulama /VisualVM
  • 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
  • 8.
  • 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
  • 13. Kaynaklar • http://www.artima.com/insidejvm/ed2/jvm2.html • http://www.artima.com/insidejvm/ed2/gc.html • http://serkansakinmaz.blogspot.com.tr/2013/08/java-da-stack-ve-heap-kavram.html • https://docs.oracle.com/javase/8/docs/technotes/guides/visualvm/ • http://bilgehanarslan.com/jvm-nedir/ • http://jvmmemory.com/ • http://www.kurumsaljava.com/2015/01/08/jvm-stack-nedir-ve-nasil-calisir/ • http://javapapers.com/core-java/java-jvm-run-time-data-areas/#Method_Area • http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html#t1s2 • http://www.journaldev.com/2856/java-jvm-memory-model-and-garbage-collection-monitoring-tuning