c++ 內存管理

Valgrind 是個開源的工具,功能不少。

  1. Memcheck是一個內存錯誤檢測器。它有助於使你的程序,尤爲是那些用C和C++寫的程序,更加準確。
  2. Cachegrind是一個緩存和分支預測分析器。它有助於使你的程序運行更快,分析CPU的cache命中率、丟失率,用於進行代碼優化。。
  3. Callgrind是一個調用圖緩存生成分析器。它與Cachegrind的功能有重疊,但也收集Cachegrind不收集的一些信息,檢測程序代碼的運行時間和調用過程,以及分析程序性能。
  4. Helgrind是一個線程錯誤檢測器。它有助於使你的多線程程序更加準確,用於檢查多線程程序的競態條件。
  5. DRD也是一個線程錯誤檢測器。它和Helgrind類似,但使用不一樣的分析技術,因此可能找到不一樣的問題。
  6. Massif是一個堆分析器。它有助於使你的程序使用更少的內存。
  7. DHAT是另外一種不一樣的堆分析器。它有助於理解塊的生命期、塊的使用和佈局的低效等問題。
  8. SGcheck是一個實驗工具,用來檢測堆和全局數組的溢出。它的功能和Memcheck互補:SGcheck找到Memcheck沒法找到的問題,反之亦然。
  9. BBV是個實驗性質的SimPoint基本塊矢量生成器。它對於進行計算機架構的研究和開發頗有用處

memcheck

valgrind --tool=memcheck  --leak-check=full --show-reachable=yes --log-file=$LOGPATH/$toolname.memcheck.log  ./$toolname -t 10 < $valgrind_pack >數組

https://www.oschina.net/translate/valgrind-memcheck?cmp緩存

massif

堆棧分析器,它能測量程序在堆棧中使用了多少內存,告訴咱們堆塊,堆管理塊和棧的大小。多線程

valgrind --tool=massif --stacks=yes ./visionary_ec_tool -t 10 < ~/libtest/mcpack_lib/pack.100 > massif.o1 2> massif.o2 &架構

ms_print massif.out.*** >massif.log工具

 

valgrind --tool=massif --threshold=0.1 --max-snapshots=1000 ./visionary_ec_tool -t 25佈局

callgrind

valgrind --tool=callgrind ./memleak 性能

callgrind_annotate  callgrind.out.23603 >callgrind.log優化

相關文章
相關標籤/搜索