2011-01-14 51 views
20

Valgrind'in farkındayım, ancak yalnızca bellek yönetimi sorunlarını algılıyor. Aradığım şey, bana genel bir bakış sunan bir programdır, programımın hangi bölümlerinde ne kadar hafıza tüketir. Ör. Bir ağaç haritası (KCachegrind Callgrind için yaptığı gibi) serin olurdu.Bellek kullanımı nasıl görüntülenir?

Bir Linux makinesinde çalışıyorum, bu nedenle windows araçları bana çok yardımcı olmayacak.

cevap

20

Valgrind araçlarının bir parçası olan massif kullanın. massif-visualizer, verileri grafik olarak oluşturmanıza yardımcı olabilir veya ms_print komutunu kullanabilirsiniz.

+0

Teşekkürler, ekran görüntüleri çok harika görünüyor ..., bence her zaman istediğim bu. – math

4

Google tarafından gperftools aracılığıyla teslim edilen heap profiler'u deneyin. Bunu her zaman kaynaklardan yaptım, ancak birkaç Linux dağıtımında precompiled package olarak kullanılabilir.

Bir dinamik kitaplığı yürütülebilir dosyalarınıza bağlamak ve programı çalıştırmak kadar basittir. O (bildiğim kadarıyla gördüğüm gibi) her dinamik bellek ayırma hakkında bilgi toplar ve diske bir bellek dökümü aşağıdakilerden biri olur her zaman kaydedin:

  • HEAP_PROFILE_ALLOCATION_INTERVAL bayt program tarafından tahsis edilmiş

      (varsayılan : 1 Gb) HEAP_PROFILE_INUSE_INTERVAL bayt (varsayılan tarafından
    • yüksek su bellek kullanımı işareti artar: 100 Mb)
    • HEAP_PROFILE_TIME_INTERVAL saniye (varsayılan geçtikten
    • : inaktif)
    • açıkça kodunuzdaki
    • den HeapProfilerDump() çağrı Eğer yığın kullanımı bir anlık olması tam olarak ne zaman kontrol etmek ve daha sonra iki farklı anlık karşılaştırmak ve yanlış görebilirsiniz çünkü

    sonuncusu, benim deneyim, en yararlıdır.

    Sonunda, birkaç olası çıkış (yönlendirilmiş bir grafik şeklinde) metinsel ve grafiksel gibi biçimleri bulunmaktadır: I yanlış bir bellek kullanımlarını nokta başardık Bu aracı kullanarak

    Graph of memory usage

    bu Massif'i bulamadım.