如何定位程序占用内存过大问题-程序内存/CPU占用分析

  • A+
所属分类:.NET技术
摘要

背景  在做软件项目时,系统产品上线运行一段时间后。有时莫名其妙写的程序会吃很大内存或占用很大CPU,而在生产环境中又无法断点查看怎么办?这时候就急需定位是程序中哪块写的有问题,是持有的资源没释放、还是某对象或集合数据量过大?

背景

  在做软件项目时,系统产品上线运行一段时间后。有时莫名其妙写的程序会吃很大内存或占用很大CPU,而在生产环境中又无法断点查看怎么办?这时候就急需定位是程序中哪块写的有问题,是持有的资源没释放、还是某对象或集合数据量过大?

  1. 内存占用分析:

  通常做法是首先需要收集运行程序的转储文件(*DMP),该文件记录程序的运行状态信息。可供我们分析。这里我用的是JetBrains dotMemory软件,可以通过DMP文件来分析程序的内存占用情况,如下图软件需要的话可以网上自行下载

如何定位程序占用内存过大问题-程序内存/CPU占用分析

注意转储文件需要32位任务管理器收集,先创建32位任务管理器快捷方式到桌面便于使用:

如何定位程序占用内存过大问题-程序内存/CPU占用分析

 

 如何定位程序占用内存过大问题-程序内存/CPU占用分析

 

进入32位任务管理器

如何定位程序占用内存过大问题-程序内存/CPU占用分析

 

 如何定位程序占用内存过大问题-程序内存/CPU占用分析

到指定目录复制该文件

 如何定位程序占用内存过大问题-程序内存/CPU占用分析

复制收集指定.DMP文件

如何定位程序占用内存过大问题-程序内存/CPU占用分析

 

 打开JetBrains dotMemory软件

如何定位程序占用内存过大问题-程序内存/CPU占用分析

 

导入DMP文件

 如何定位程序占用内存过大问题-程序内存/CPU占用分析

 

如何定位程序占用内存过大问题-程序内存/CPU占用分析

 

 如上图所示,可以看出当前程序变量内存占用及层次结构。

2.CPU占用分析:

CPU分析可采用JetBrains dotTrace,CPU占用分析比较简单,可以直接远程挂载需要分析的程序或者本地的程序

如何定位程序占用内存过大问题-程序内存/CPU占用分析

 

 CPU分析过程比较简单这里就不在复述

完毕!