c++内存泄露:使用性能监视器进行内存泄露的确认

对于服务器程序,在不停的运作中,如何去测试是否存在内存泄露,如果你的开发环境是在windows下,那么我们就可以使用windows自带的性能监视器来观察程序的性能。


使用此例子:

// Test.c
int main()
{
    while (true)
    {
        char *test = new char[100];
        Sleep(100);
    }
    cin.get();
    return 0;
}


循环申请堆空间

(1)      开始运行程序test

(2)      打开性能监视器(Performance Monitor)

(3)      使用性能监视器中的数据收集器,进行数据的收集

(4)创建自定义的数据收集,按下图步骤进行配置。

图1 右击用户定义->新建->数据收集器

图2 填写新建项目名称->手动创建->下一步

图3,选择性能计数器->下一步

图4,点击添加->下一步

图5,选择process(进程选项),processor(处理器),这里的选项由需要监听的属性而定,这里暂且监听的是测试程序该进程的相关属性。

图6,选择该进程需要监听的项目 通常需要监听的是:Handle Count(句柄数)、private Bytes(程序拥有的私有字节)、Virtual bytes(虚拟内存)、working set - private (这个值就是任务管理器里面的内存使用量)

图7,选择多长时间记录一次

图8,下一步

图9

图10,选择记录数据用制表符进行分隔,为了能用execl进行统计

图11,开启监听

图12 用execl 打开目标目录下的文件

图13,用折线图进行统计

从图中working set-private上升的曲线可以确定此程序存在内存泄露。

当程序遇到内存泄漏,我们应该做的是去定位内存泄漏的位置,并解决它。请看下一章节。

c++内存泄露(一):理解内存泄漏及内存泄漏常见情况

c++内存泄露(三):定位和解决内存泄露
--------------------- 
作者:invisible_sky 
来源:CSDN 
原文:https://blog.csdn.net/invisible_sky/article/details/78205576 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/VVBBBBB/article/details/85317679
今日推荐