内存泄漏查找方案_第1页
内存泄漏查找方案_第2页
内存泄漏查找方案_第3页
内存泄漏查找方案_第4页
内存泄漏查找方案_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MPC内存泄漏查找方案1.基本工具及方法使用工具VS2003,LeakDiag,Windows自带Perform检测器基本查找方法在开发代码期间,当程序退出时,vs的输出对话框中有内存泄漏的输出显示。不要放过这样的机会,一定保证程序调试的时候正常退出时,vs输出对话框中无内存泄漏显示。专门查找内存泄漏,使用LeakDiag工具,记录程序逻辑中认为分配内存前,分配内存后,释放内存后的对应点。分析获得的log日志,查找内存泄漏。备注:在查找内存泄漏前,需要确定所查Application是否内存泄漏,或者内存泄漏严重性。需要借助Windows自带的性能计数器。可以再本机或者测试机器上建立一个对应于Application的性能计数器。主要检测性能计数器的PrivateBytes字段。在程序运行一段时间,会出现对应的blg文件,一般存放在C:\PerfLogs中。通过查看自己程序的PrivateBytes来查找Application是否内存泄漏或者是VisualMemory碎片。2.调度内存泄漏查找方案2.1工作流程MQ任务接收à任务分析à内存数据添加和更新à界面更新àend任务分配à子任务构造à内存数据更新à界面更新à分配到服务MQàendMQ服务接收à服务注册à内存数据更新à界面更新àendMQ服务接收à服务卸载à内存数据更新à界面更新àendMQ服务接收à子任务回馈消息(成功、失败、进度)à内存数据更新à界面更新àendMQ服务接收à服务心跳à内存数据更新à界面更新àend任务完成à成功任务入历史记录à内存数据删除à界面条目删除àend任务删除à内存数据删除à界面条目删除àend历史记录查询à内存数据创建à界面条目增加àend历史记录删除à内存数据删除à界面条目删除àend历史记录列表清空à内存数据删除à界面条目删除àend2.2内存泄漏测试caseCaseNameModulesHowtoTest服务注册服务注册,内存数据,界面更新服务注册,但不发送心跳信息首先使用NULLWORK服务来模拟,同时也需要修改调度,不让调度中的服务无心跳后卸载。服务心跳服务心跳处理模块服务不断发送心跳(增大心跳发送频率)首先使用NULLWORK服务来模拟,需要增大心跳发送的频率。服务卸载服务卸载,内存数据,界面更新服务正常发送卸载消息服务不发送心跳,导致调度服务异常卸载首先使用NULLWORK服务来模拟任务接收测试任务接收,策略读取,任务分析,,任务删除MQ工具任务接收任务,然后使用taksconsle的删除功能删除所有任务任务分配子任务xml构造,任务发送,内存数据,界面更新服务只接受任务,返回添加成功或失败等信息首先使用NULLWORK服务来模拟;再用真正的转码,剪切,合成等流程来测试进度进度消息处理,内存数据,界面更新服务接收任务成功后,不断返回进度信息。首先使用NULLWORK服务来模拟,增大进度返回的频率;再用真正的转码,剪切,合成等流程来测试任务成功,且成功功任务不入历史库消息接收,任务状态更新,内存数据,界面更新服务接收任务成功后,只返回任务成功的消息。配置调度整个任务成功后,不入历史库。首先使用NULLWORK服务来模拟,收到任务后,立即返回任务成功。任务成功,且成功任务写入历史库消息接收,任务状态更新,内存数据,界面更新,历史记录模块服务接收任务成功后,只返回任务成功的消息。配置调度整个任务成功后,入历史库。首先使用NULLWORK服务来模拟,收到任务后,立即返回任务成功。任务失败消息接收,任务状态更新,内存数据,界面更新服务接收任务执行失败消息。首先使用NULLWORK服务来模拟,服务接收任务成功后,不返回进度,直接返回任务执行失败的消息。注意:使用LeakDiag记录以下几个点,操作之前初始状态的点,每个类型操作批量操作之后的点,清理环境为初始状态的点。然后对相关数据做分析。3.转码内存泄漏查找方案3.1工作流程3.1.1拆包1MXF(ExcludeDBE)àAvi+Wav//1MXF(IncludeDBE)àAvi+Wav+DBE3.1.2转码 MxfAvi(1.0)+mp3 //MxfAvi(2.0)+mp3 Avi+wavAvi(1.0)+mp3 //Avi+wavAvi(2.0)+mp3 //Avi+wavWMV3.1.2封包 Avi+WavMXF(ExcludeDBE)//Avi+Wav+DBE1àMXF(IncludeDBE)内存泄漏测试caseCaseNameModulesHowtoTest任务接受解析TaskConsole调度任务,并更新UI正常任务与错误任务交叉使用。任务状态反馈将转码服务本身运行状态返回给TaskConsole.(不要忽略心跳检测)使用不同的NotifyEvent来查看拆包拆包流程,主要针对Mxf到Avi任务配置不同的策略,使用不同的素材,达到3.1.1的效果。使任务成功一次,中途失败一次。转码转码流程,主要针对media格式不同的转换任务配置不同的策略,使用不同的素材,达到3.1.2的效果。使任务成功一次,中途失败一次。封包主要针对avi格式到mxf的封包任务配置不同的策略,使用不同的素材,达到3.1.3的效果。使任务成功一次,中途失败一次。4.内存查找点: 明显的MemoryLeak出现已经解决,即在Debug下,退出程序会出现内存泄漏的输出显示。目前主要解决的有:COM组件中的MemoryLeak主要是BSTR,VARIANT,_bstr_等的使用VirtualMemoryLeak提交字节计数器跟随虚拟字节计数器缓慢增长,则容易出现VirtualMemoryLeakVirtualMemoryFragmentation虚拟字节计数器增长快于提交字节数,则为VirtualMemoryFragmentation。容易出现在同意堆上的Arrary数组与Hash表。主

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论