使用Inspector XE检查某个时间段的内存增长



Intel® Inspector XE 2011 帮助用户找到内存泄漏(Leak)问题,内存非法访问问题,和线程间共享变量的访问冲突问题。除此之外,工具还有一个非常实用的功能,就是检测程序运行过程中,一段时间新增内存的开销。用户可以设置一个起始点(Transition Start)和一个终止点(Transition End)。在这个时间段,程序可能申请新的内存块,也可能释放,或再次申请。这样用户可以知道此时间段内新增内存的开销。

 

下面是一个简单的例子,在十分钟内不断申请新的内存。你可以设置起始点和终止点。

使用Inspector XE命令行来操作。结果可以放到图形界面显示。



	 
	 

	

		/* This is memory growth test file – mem_growth.c */


		#include <stdio.h>


		 


		#define MAX_NUM 120 /* total 120 times to allocate memory, elapsed time 600s */


		 


		int main()


		{


		char *str[MAX_NUM];


		int i;


		 


		    for (i=0; i<MAX_NUM; i++) {


		        str[i] = (char *) malloc (16*sizeof(char));


		        sleep (5); /* wait 5 seconds, each time */


		    }


		 


		    return 1;


		}


		 
	

[shell]步骤[/shell]

 1. gcc -g mem_growth.c -o mem_growth

2. inspxe-cl -collect mi3 -- ./mem_growth

3. In other console, do
a) inspxe-cl -command memory-growth-start -r r001mi3 ; wait for awhile
b) inspxe-cl -command memory-growth-end -r r001mi3

4. In original console, after 10 minutes, will see -
[root@NHM02 problem_report]# inspxe-cl -collect mi3 -- ./mem_growth
Used suppression file(s): []
 
2 new problem(s) found
    1 Memory growth problem(s) detected
    1 Memory leak problem(s) detected 
 
有关编译器优化的更完整信息,请参阅优化通知