背景
近期服务器的内存不定时会突然的暴涨,然后就一直持续不下,只能夜里偷偷重启服务器(●’◡’●),于是就想抓取一下内存,看看是哪些东西在占用内存,虽然可以使用任务管理器抓取,但需要时刻盯着,麻烦!所以就使用了procdump.exe,可以根据设定的条件抓,比如内存达到一定的值,CPU达到一定的值等。
操作步骤
演示程序代码如下:
static void Main(string[] args)
{
var list = new List<string>();
for (; ;)
{
list.Add(string.Join(",", Enumerable.Range(0, 10000)));
}
Console.ReadLine();
}
- 启动CMD,并进入procdump.exe所在的目录
- 启动演示程序
- 在CMD中执行如下命令:
procdump ConsoleApp3 -m 1024 -ma D:\
解释:
ConsoleApp3是程序名称
-m 1024 内存的阈值,达到该值时就进行抓取,单位是MB
-ma 是生成full dump, 即包括进程的所有内存. 默认的dump格式包括线程和句柄信息
D:\ 抓取的dump存取位置
截图如下: