当前位置:   article > 正文

[VS] 诊断工具,检测内存泄漏,进行内存调优_vs内存分析

vs内存分析

工具:vs2019
系统:win10
语言:C++
github 调试 demo:  dangwei-90/ProcessOptimize (github.com)

本文主要通过 VS 自带的诊断工具,对程序进行 memory 内存调优。

Begin

1. 编译测试 demo

    读者可以通过 dangwei-90/ProcessOptimize (github.com) 下载,也可以自己编写测试 demo. 通过一个 while 循环来造成内存泄漏

  1. void CProcessOptimizeDlg::TestMemoryLeak()
  2. {
  3. while (!is_stop_) {
  4. int* arr = new int[200];
  5. std::cout << arr << std::endl;
  6. Sleep(100);
  7. }
  8. }
  9. void CProcessOptimizeDlg::OnBnClickedMemoryTest()
  10. {
  11. is_stop_ = false;
  12. std::thread memory_thread(&CProcessOptimizeDlg::TestMemoryLeak, this);
  13. memory_thread.detach();
  14. }

2. 通过 VS 诊断工具

    先启动 debug 调试,然后按 CTRL+ALT+F2 ,开启诊断工具,如下图所示:
    

    如果提示“已禁用使用快照分析....”,点启用即可。

3. 通过工具开始分析

   程序运行一分钟后,点击 截取快照 。此时,可以通过工具,分析这一分钟内,内存增长的函数占比,然后分析内存泄漏的地方,对之进行优化。
   如下图所示:
    

    点击 查看堆,如下图所示:
    

    点击该行,查看详细情况:
    

    此处显示,TestMemoryLeak() 方法,每隔110毫秒左右,会新增 800 字节的内存泄漏。点击该方法,如下图所示:
    

    标蓝的行,表示诊断工具定位到的内存新增的地方。可以发现,while 循环内,每隔100毫秒,会 new 200个 int,但并没有 delete,导致内存泄漏。

4. 分析结束

    大家可以通过该方法,对自己的程序,检测内存泄漏,进行内存调优。

转自:[VS] 诊断工具,检测内存泄漏,进行内存调优_池塘码农的博客-CSDN博客_vs诊断工具

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号