前页 后页

内存泄漏

Memory leaks profiling interface in Enterprise Architect

Profiler控件,显示内存分配的数量和无内存的操作的数量。

Example memory leak profile of well behaved progam

一个表现良好的程序。

内存泄漏检测是一条行之有效的道路。尽管还有许多其他好的选择,但我们认为我们的方法具有很多好处,例如:

  • 现有项目构建完全没有变化
  • 项目代码不需要头文件
  • 没有运行时依赖项
  • 无需考虑系统配置

用法

人们将使用此模式来跟踪应用程序或应用程序中的活动中的内存泄漏。从Profiler的角度来看,内存泄漏是对内存分配函数的成功调用,该函数返回一个内存地址,而没有进行匹配调用以释放该地址。

操作方式

内存泄漏检测通过挂钩进行。该进程的内存例程被挂钩以跟踪何时分配和释放内存。在分配时捕获了调用堆栈,并且在Enterprise Architect整理了此信息,以生成调用图形式的报告。捕获受到控制;也就是说,可以根据需要启用或禁用挂钩机制。

根据程序的类型及其内存消耗,您可以采用适当的策略。对于小型程序,您可能会从头到尾跟踪程序。对于较大的窗口程序,通过在特定任务之前和之后切换捕获以避免跟踪过多数据,可能会做得更好。

结果

可以在会议期间的任何时间产生结果;但是,必须禁用捕获才能使“报告”按钮变为活动状态。您可以决定让Profiler运行多长时间。您可以通过暂停捕获或完全停止事件探查器来启用“报告”按钮。

结果显示在“报告”视图中。该报告最初会打开,并显示两个选项卡。单个加权调用图和函数摘要。调用图描述了导致内存分配的所有调用堆栈,并根据模式的频率进行汇总和加权。

报告可以包含可变数量的“噪声”。要专注于您特别关注的区域,请在摘要报告中找到一个您所知道的功能,然后使用该功能直接导航到图中该功能所在的行中。

要求

为了获得最佳结果,应使用包含调试信息的映像及其模块进行构建,而无需进行优化。具有帧指针省略(FPO)优化功能的任何模块都可能产生误导性的结果。