Heap Dump nasıl yapılır?

Şu yazıda Heap Dump nedir, neden ihtiyacımız var gibi sorulara cevap vermiştim.Bu yazıya başlamadan önce göz atmakta fayda var. İki şekilde Heap Dump alma yöntemini inceleyeceğiz. İlki hali hazırda çalışıyor olan bir Java programının Heap Dump ile çıktısını alma yöntemidir. Bunun için Linux’ta terminali açıyoruz. top yazarak Java uygulamamızın sahip olduğu PID değerini öğreniyoruz. Ardından aşağıdaki komutu terminal aracılığıyla çalıştırıyoruz. Komut şunun gibi bir çıktı verecektir; Çıktımıza belirtilen klasörden ulaşabiliriz. Bir diğer yöntem ise bellek dolduğu an JVM’in bizim için bir Heap Dump çıktısı üretmesidir.Bunu da vereceğimiz JVM argümanları ile gerçekleştirebiliriz.Aşağıdaki kodları Eclipse için anlatmak gerekirse Run -> Run Configurations -> Arguments -> VM Arguments kısmına yazıyoruz. Tabi böyle ezbere argüman yazarak ne yaptığımızı anlamadan iş yapmak pek... Devamını oku..

Heap Dump nedir?

Heap Dump’ı açıklamak için öncelikle Heap nedir onu bilmek lazım. Herhangi bir Java sınıfından new operatörü ile bir nesne oluşturulduğunda, bu nesnenin bilgisayarın hafızasında konuşlandırıldığı alana Java Heap adı verilir. Bu heap alanı ise JVM kontrolündedir. Bildiğimiz gibi Java kodlarının çalıştırılabilmesi isin Java Virtual Machine kısaca JVM’e ihtiyacımız var. JVM bizim için heap alanını oluşturur ve Garbage Collector aracılığı ile kontrolünü sağlar. Peki Heap Dump nedir? Heap Dump, heap bölgesinin bir kopyasını bizim için çıktı olarak alma işlemidir. Bu dosyadan heap’te ne kadar nesne yaşıyor,bellek ne kadar kullanılıyor gibi sorulara gerekirse saniye saniye cevap bulabiliyoruz. Yani kısaca bellekte ne var ne yok öğrenebiliyoruz. Güzel öğrendik ama neden böyle birşeye ihtiyaç duyalım ki? Daha ortada Java yokken nesnelerden bir diğer deyişle bellek tahsis edilen her bir değişkenden... Devamını oku..