预订演示
前页 后页

内存泄漏

Memory leaks profiling interface in Enterprise Architect

Profiler 控件,显示内存分配计数和可用内存操作的计数。

Example memory leak profile of well behaved progam

A表现良好的程序。

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

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

用途

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

手术

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

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

结果

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

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

报告可能包含可变数量的“噪音”。要聚焦您特别关注的领域,请在摘要报告中找到您已知的函数,并使用它直接导航到图表中的特征线。

需求

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