Heap dump
- Java kursu
- Uzman
- Ders 34/46
- 5 dk
jmap ve heap dump ile bellek analizi öğrenirsin.
Heap dump alma
Heap dump, yığındaki canlı nesnelerin anlık görüntüsüdür; .hprof biçiminde kaydedilir. jcmd PID GC.heap_dump dosya.hprof ile ya da -XX:+HeapDumpOnOutOfMemoryError bayrağıyla OOM anında otomatik alınır.
Dump, bellek sızıntılarını bulmak için kullanılır. En çok yer tutan nesneler, tutulan boyut (retained size) ve baskın ağaç (dominator tree) incelenir.
heap dump analizi
Heap dump analizinde tutulan boyut (retained size) önemlidir: bir nesne silinse ne kadar bellek boşalacağını gösterir. Baskın ağaç (dominator tree) en çok belleği tutan nesneleri hiyerarşik sunar.
Analiz araçları: Eclipse MAT sızıntı şüphelilerini önerir, VisualVM canlı izleme yapar, eski jhat ise yerini MAT'e bırakmıştır. Sızıntı bulununca kök referans (GC root) takip edilir.
Uygulama HeapDumper sınıfını yaz
class HeapDumper tanımla; static String dump(int pid, String path) metodu "jcmd " + pid + " GC.heap_dump " + path döndürsün. main içinde System.out.println(dump(1234, "/tmp/heap.hprof")); yazdır.
Başlangıç kodu
// HeapDumper sınıfını tanımla: dump metodu jcmd komutu üretsin
// main: 1234 PID için heap dump komutunu yazdırÖrnek çözüm
class HeapDumper {
static String dump(int pid, String path) {
return "jcmd " + pid + " GC.heap_dump " + path;
}
public static void main(String[] args) {
System.out.println(dump(1234, "/tmp/heap.hprof"));
}
}Beklenen çıktı
jcmd 1234 GC.heap_dump /tmp/heap.hprof
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Heap dump neyi tutar?
- Yığın izlerini
- Thread durumunu
- Canlı nesneleri Doğru cevap
- CPU örneklemeleri
Açıklama: Heap dump yığındaki canlı nesnelerin görüntüsüdür.
2 OOM bayrağını tamamla
-XX:+____ -XX:HeapDumpPath=/tmp/dump.hprof
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/dump.hprof
Açıklama: Bu bayrak OOM anında heap dump alır.
3 analiz araçlarını eşleştir
| Kavram | Anlamı |
|---|---|
Eclipse MAT |
Sızıntı şüphelisi bulur |
VisualVM |
Canlı izleme |
jcmd |
Dump alır |
retained size |
Tutulan bellek |