整理自己很重要,慢慢的知识就成体系了。
内存性能测试软件主要的功能就是记录下一段时间内的内存使用情况,并向用户提供一些查看分析内存使用的辅助功能。相关软件有以下几种:
1. 启动程序后会弹出下面一个窗口,点击“Mark Memory”后,程序就开始记录内存信息了。
2. 点击”Mark Memory”,窗口变成了下面的内容,点击“Get Snapshot”,就会记录下软件这段时间内的内存情况。
3. 下面就是生成的快照文件视图。
1. 软件启动并设置好要测试的应用程序后,界面是下面的样子。中上部分是实时显示内存情况的波形图。点击右上方的“TakeMemory Snapshot”按钮就可以生成一个时间点的快照。
2. 生成快照后,后生成以下图片中的情况,一个内存变化的大纲图。Baseline表示基准快照,Current为当前快照,大纲图为当前快照与基准快照的对比图。两个快照都可以使用下拉菜单来选择。第一次基准快照为空。然后就可已经对内存进行分析了。
1. 软件启动并设置好要测试的应用程序后,界面是下面的样子。他主体部分包含很多标签页,下面是“Real-Time”实时标签页,用来展现内存的实时情况。点击右侧的“Collectsnapshot”会生成当前时间点的内存快照。
2. 下面是“OverView”标签页用来表示内存变化一个整体情况。ShowSnapshot用来表示当前内存快照,ComparisionSnapshot用来表示基准快照。同样两个都是可以选择的,基准快照第一次也为空。其他的标签页用来以不同的方式查看内存。
dotTrace Meory查看内存非常方便,软件也设计了很多图标,使类,对象,方法等信息一目了然。
左侧栏很方便用户从类、命名空间、对象、引用关系、线程角度来查看内存情况。
1左侧栏
中间部分很明显的显示了内存的包含情况,使用图标显示了很丰富的信息,比如图中:对象,数组,列,对象实例在托管堆中代数。
工具栏中设置了从存在的,已经回收,已经标记为垃圾对象,非托管对象等不同角度来查看内存。还查询功能,能快速查询到特定类或特性方法的内存情况。
软件下方能够显示代码情况。
通过邮件操作,可以打开一个新的标签页查看特定类或对象实例的内存情况。这个功能还很有用的,因为性能的异常主要是某个类出现的问题。
ANTS Memory Profiler界面显示它性能分析的基本步骤,基本是从左向右一步一步进行的。
在生成快照后先从”Summay”查看一个整体的内存情况,中间还包含一个”MemoryFragmentation“内存碎片来提示可能包含的内存问题。
如果存在问题,就可以进入”ClassList“视图,查看一下那些类内存突然增加或减少,通过排序很容易找到。
然后应该是查看一下增加或减少了那些对象实例,”InstanceCategorizer”用流程图的方式来表示实例及引用关系,”InstanceList”用列表的形式表示不同的实例。这里也可以方便的查询出对象实例的值。
2 Instance Categorizer
3 Instance List”
下面ANTSMemory Profiler提供了查看一个对象实例引用关系的一张图。这张图可以使我们可以定位到出现内存问题的具体位置。不过层级关系太多,看起来可能会比较乱。
除此之外,ANTSMemory Profiler还有个Walkthrough用来帮助用户使用软件,使软件入门很方便(英语不好的话,这个就没用了)。
.Net Memory Profiler提供的功能最丰富。他主要通过不同的标签页来以不同的角度来查看内存情况。
“OverView”视图代表整体的内存情况,可以查看各个类的内存变化,同时有方便的查询方式。ShowType可以选择查看不同类型的内存,比如新增\减少的内存,非托管内存等几种。Showhierarchical可以选择从程序集的层级关系查看类的内存情况。Fiter还对一些典型的内存种类做了统计。
4”OverView”
“Type Detail”视图列出来某一类的对象实例使用情况。可以在“OverView”视图中双击某个类打开“TypeDetail”视图。鼠标指向对象实例,还可以显示属性值和调用堆栈。下面也提供了引用关系和调用堆栈的标签页。右侧用图的方式显示的与其他类的调用关系。双击对象实例对会弹出一个“InstanceDetail”视图来具体显示对象实例的内存情况,也包含引用关系,调用对象信息。
5”Type Detail”
6Instance Detail
“Call stack/Method”调用堆栈/方法视图,可以从堆栈或方法查看具体执行过程产生的内存情况。如果就是测试某个方法产生的内存,这个无疑是最方便的。
“Native Memory”视图提供了非托管内存的变化情况。
7 Native Memory
另外对可能是内存泄露的地方,软件用相应的提示信息。
dotTrace Memory | 不足:没有实时查看内存的功能。不能查看快照实例对象的值。优点:查看快照的功能比另外两种都方便快捷,用户体验好。 |
---|---|
ANTS Memory Profiler | 不足:没有堆栈\方法视图,这是硬伤。实时显示图占据很大面积,查看快照的面积相对较小。优点:相比.Net Memory Profiler界面风格较好,上手容易 |
.Net Memory Profiler | 除界面外没有明显不足,功能强大。比其他两种要多花点时间熟悉。 |
Cpu性能测试包括的概念比较多,不过在代码级别上,我们需要得到是在一段时间内方法执行的次数和时间。这里对一下两个个软件进行了对比:
dotTrace Performance和dotTrace Memory的操作类似,设置好要测试的程序,启动后在执行操作做做一个标记,完成操作后获取快照,快照就记录下了操作过程中方法使用的CPU时间和调用次数等信息。
8添加标记
9获取快照
查看快照的功能,也与dotTraceMemory类型。
左侧列出了不同的查看方式:大纲图,线程树,调用堆栈树,方法列表,热点图。
10线程视图
11"PlainView"方法列表视图
总的来说,dotTracePerformance使用起来非常简单。
ANTS Performance Profiler与ANTS Memory Profiler是同一家公司的产品,风格上也保持了一致。中上部为CPU的实时使用状态,通过鼠标拉动一个区域来测试该时间段内的CPU使用情况。方法的使用情况在中下部分的表格中显示。
Show下拉列表可以通过不同的方式查看CPU使用情况
出了Cpu的使用情况外,ANTSPerformance Profiler还可以显示数据库调用,和FileIO的信息。
两个软件的差别并不是特别大,查找cpu异常的地方ANTSPerformance Profiler可能更好一些;针对某个软件操作,查看cpu使用情况,dotTracePerformance可能更方便。