- A+
所属分类:.NET技术
背景
在做软件项目时,系统产品上线运行一段时间后。有时莫名其妙写的程序会吃很大内存或占用很大CPU,而在生产环境中又无法断点查看怎么办?这时候就急需定位是程序中哪块写的有问题,是持有的资源没释放、还是某对象或集合数据量过大?
- 内存占用分析:
通常做法是首先需要收集运行程序的转储文件(*DMP),该文件记录程序的运行状态信息。可供我们分析。这里我用的是JetBrains dotMemory软件,可以通过DMP文件来分析程序的内存占用情况,如下图软件需要的话可以网上自行下载
注意转储文件需要32位任务管理器收集,先创建32位任务管理器快捷方式到桌面便于使用:
进入32位任务管理器
到指定目录复制该文件
复制收集指定.DMP文件
打开JetBrains dotMemory软件
导入DMP文件
如上图所示,可以看出当前程序变量内存占用及层次结构。
2.CPU占用分析:
CPU分析可采用JetBrains dotTrace,CPU占用分析比较简单,可以直接远程挂载需要分析的程序或者本地的程序
CPU分析过程比较简单这里就不在复述
完毕!