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

背景

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

  1. 内存占用分析:

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

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

 

 

 

进入32位任务管理器

 

 

到指定目录复制该文件

 

复制收集指定.DMP文件

 

 打开JetBrains dotMemory软件

 

导入DMP文件

 

 

 

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

2.CPU占用分析:

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

 

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

完毕!

 

posted @ 2022-01-05 09:31  豆腐柠檬  阅读(798)  评论(0编辑  收藏  举报