码迷,mamicode.com
首页 > 系统相关 > 详细

如何分析进程的内存占用问题

时间:2017-03-03 22:34:00      阅读:307      评论:0      收藏:0      [点我收藏+]

标签:img   箭头   无法   http   dump   对象   win   地址   int   

一共推荐三种分析内存占用的方式

1、vmmap.exe

属于SysinternalsSuite中的工具,很强大,可以方便的查看特定进程的内存总大小(Size)、内存的提交大小(Committed)、内存专用工作集等(Private WS)等,也可以启动一个进程定时生成快照。

具体各名词介绍可以参考工具的help,或者参考如下文章:

vmmap介绍与下载地址:https://technet.microsoft.com/en-us/sysinternals/vmmap

vmmap用法介绍:http://blog.gclxry.com/use-vmmap/

名词介绍:http://shashanzhao.com/archives/832.html

SysinternalsSuite下载地址:https://technet.microsoft.com/en-us/sysinternals/bb842062.aspx

技术分享

 

2、vs2015

vs2015自带很强大的内存快照与分析功能(即使不是vs2015编译的项目也可以分析),调试运行项目后,只需三步即可以分析内存情况,如下图vs侧边栏:

技术分享

在内存正常时先快照一次,操作被调试的进程,再快照一次,即可看到内存的增加或减少,点击“箭头3”所指的几处蓝色数值即可分别查看不同的内存堆栈信息,而且可用“dll模块视图”或“调用栈视图”查看。

如果不是vs2015编译的项目,可以通过:右键解决方案->Add->Existing Project...->选择相应exe添加并调试,注意此exe和dll要有pdb才能看到快照的调用栈内存情况,否则虽然可以快照但只有内存数值,无法定位是哪部分代码导致的内存波动。

 

3、windbg

windbg的强大自不必说,相关命令如下:

!eeheap,查看堆中信息,可以查看到大对象。
!dumpheap,查看堆中信息,一般带-min,-stat,-type等参数。
!gcroot,根据堆地址,查看相关模块引用代码信息。

但我也没仔细用过,具体信息可以参考这篇文章:

http://www.cnblogs.com/Lawson/archive/2011/01/23/1942692.html

如何分析进程的内存占用问题

标签:img   箭头   无法   http   dump   对象   win   地址   int   

原文地址:http://www.cnblogs.com/roadbike/p/6498410.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!