ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
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
JVM ve VisualVm
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

More Related Content

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
  • 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