Profiler工具使用,NET程序内部存储器分析工具CLRProfiler的选取

世家都知道.net有壹套本身的内部存款和储蓄器(垃圾)回收机制,除非有一部分数据(方法)短时间私吞内存不趁早垃圾回收成效而自由内部存款和储蓄器,那样就招致了我们经常说的内部存款和储蓄器走漏、内部存款和储蓄器持续巩固得不到自由等难题产生APS.NET网址只怕C/S应用程序的用户不可能正常使用。最终会导致用户通过客服人士或然才具协理职员控诉商家的才能单位,造成多元的茫然的蹩脚反映。

世家都知道.net有一套本身的内部存款和储蓄器(垃圾)回收机制,除非有一对数码(方法)长期占用内部存款和储蓄器不趁早垃圾回收作用而释放内部存储器,那样就变成了笔者们平常说的内部存款和储蓄器走漏、内部存款和储蓄器持续进步得不到释放等主题材料变成APS.net网址或然C/S应用程序的用户不恐怕平常使用。最终会导致用户通过客服人士依旧技艺协助人士投诉集团的手艺机构,形成铺天盖地的未知的倒霉反映。

大家都知道.net有一套本人的内部存款和储蓄器(垃圾)回收机制,除非有部分数目(方法)短期占用内部存款和储蓄器不随着垃圾回收效能而释放内部存储器,那样就导致了大家平常说的内部存款和储蓄器走漏、内部存款和储蓄器持续升高得不到自由等难题变成APS.NET网址依然C/S应用程序的用户无法平常使用。最终会导致用户通过客服人士依然本事支持人士投诉企业的才能部门,形成层层的不解的糟糕反映。

  如同剥去.NET语法糖衣的工具(Reflector等)许多等同,大家得以用来分析.NET程序质量的工具备大多,如前方一片博文DebugLZQ给大家介绍的vs自带的质量分析工具,除却常用的还有还有clr
profiler、Windbg等。

 

无论哪位质量测试职员,碰着这么的难点都以摸不着头脑,不知从何处动手。.net蒙受中不像JAVA有那么多的工具得以支撑,比如质量测试平常使用的Jconsole、Jprofiler等工具,并且基于JAVA运转条件的在打字与印刷GC日志方面也很强大。对于.net平台,微软也提供的.net协理理工科程师具CLR
Profiler能够很好的扶助大家的性质测试职员以及研究开发职员,找到内部存款和储蓄器未有立时回收,占着内部存款和储蓄器不自由的措施(详细到这几个艺术上边定义的数组恐怕别的变量)。

 

  vs自带的品质分析能够赶快的找到瓶颈代码,而且援助十二线程。

随意哪位品质测试人口,碰着这么的主题材料都以摸不着头脑,不知从何地入手。.net情形中不像Java有那么多的工具得以支撑,举个例子品质测试平常采纳的Jconsole、Jprofiler等工具,并且基于JAVA运营情状的在打字与印刷GC日志方面也很强劲。对于.net平台,微软也提供的.net帮助理工科程师具CLR
Profiler能够很好的支援大家的属性测试人士以及研究开发人士,找到内部存款和储蓄器未有立即回收,占着内部存储器不自由的办法(详细到那么些法子上边定义的数组也许其余变量)。

下载地址:

不论哪位品质测试人口,碰着这么的标题都以摸不着头脑,不知从什么地方入手。.net景况中不像Java有那么多的工具得以援救,比如品质测试平日使用的Jconsole、Jprofiler等工具,并且基于JAVA运行遭受的在打字与印刷GC日志方面也很有力。对于.net平台,微软也提供的.net支持理工科程师具CLR
Profiler能够很好的扶植大家的属性测试人士以及研究开发职员,找到内部存储器未有马上回收,占着内存不自由的诀窍(详细到这一个办法上面定义的数组或然其余变量)。

  Windbg就不多说了,Windows平台下壮大的用户态和内核态调节和测试工具!固然windbg也提供图形分界面操作,但它最有力的地点可能具有庞大的调整命令,用起来比较费力。

 

可依附本人计算机.NET的版本下载相应的CLHaval Profiler,小编下载的是CLEvoque Profiler
for .NET Framework 四版本的。

 

  那里关键要说的是CLR
Profile
了,他检测结果最棒详实,然则是因为检查实验托管堆分配和废品回收会影响应用程序的运营速度,因此不能够得之时间上的性子测试。

下载地址:

下载后提示解压缩,采用要加压到的目录;然后进入D:\SoftWare\Profiler工具使用,NET程序内部存储器分析工具CLRProfiler的选取。CLRProfiler4\CLRProfiler\Binaries目录下抉择相应操作系统陆10位照旧310人的CLRProfiler.exe。
在说一下,CLRProfiler能够分析.net平台开荒的差不多全体的产品,包蕴C/S应用程序、服务和asp.net编排的网址等。

下载地址:

CLR Profiler简介

CLLAND Profiler 是用来考查托管堆内部存款和储蓄器分配和研讨垃圾回收行为的1种工具。使用该工具中不一致的视图,你能收获有关您选拔程序的实践、内部存款和储蓄器的分红和消耗等有用新闻。CLR
Profiler分析的结果存放在日记文件中,常用的三种视图如下: 

View Description
Histogram Allocated Types Gives you a high-level view of what object types are allocated (by allocation size) during the lifetime of your application. This view also shows those objects that are allocated in the large object heap (objects larger than 85 KB).

This view allows you to click parts of the graph so that you can see which methods allocated which objects.

Histogram Relocated Types Displays the objects that the garbage collector has moved because they have survived a garbage collection.
Objects By Address Provides a picture of what is on the managed heap at a given time.
Histogram By Age Allows you to see the lifetime of the objects on the managed heap.
Allocation Graph Graphically displays the call stack for how objects were allocated. You can use this view to:

-See the cost of each allocation by method.

-Isolate allocations that you were not expecting.

-View possible excessive allocations by a method.

Assembly, Module, Function, and Class Graph These four views are very similar. They allow you to see which methods pulled in which assemblies, functions, modules, or classes.
Heap Graph Shows you all of the objects in the managed heap, along with their connections.
Call Graph Lets you see which methods call which other methods and how frequently.

You can use this graph to get a feel for the cost of library calls and to determine how many calls are made to methods and which methods are called.

Time Line Displays what the garbage collector does over the lifetime of the application. Use this view to:

-Investigate the behavior of the garbage collector.

-Determine how many garbage collections occur at the three generations (Generation 0, 1, and 2) and how frequently they occur.

-Determine which objects survive garbage collection and are promoted to the next generation.

You can select time points or intervals and right-click to show who allocated memory in the interval.

Call Tree View Provides a text-based, chronological, hierarchical view of your application’s execution. Use this view to:

-See what types are allocated and their size.

-See which assemblies are loaded as result of method calls.

-Analyze the use of finalizers, including the number of finalizers executed.

-Identify methods where Close or Dispose has not been implemented or called, thereby causing a bottleneck.

-Analyze allocations that you were not expecting.

   

上面依然从前边给出的代码为例,来介绍各类功能。代码如下:  

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace VS2010性能测试
{
    class Program
    {
        static void Main(string[] args)
        {
            int start = Environment.TickCount;
            for (int i = 0; i < 1000; i++)
            {
                string s = "";
                for (int j = 0; j <200; j++)
                {
                    s += "Outer index = ";
                    s += i;
                    s += " Inner index = ";
                    s += j;
                    s += " ";
                }
            }
            int middle = Environment.TickCount;
            Console.WriteLine("Program part1 run for {0} seconds",0.001 * (middle  - start));
            //
            for (int i = 0; i < 1000; i++)
            {
                StringBuilder s = new StringBuilder(); 
                for (int j = 0; j <200; j++)
                {
                    s.Append("Outer index = ");
                    s.Append(i);
                    s.Append("Inner index = ");
                    s.Append(j);
                    s.Append(" ");
                }
            }
            int end = Environment.TickCount;
            Console.WriteLine("Program part2 run for {0} seconds", 0.001 * (end - middle));

            //
            Console.ReadKey();
        }
    }
}

 

CLR
Profiler程序的运作分界面如下: 

美高梅开户网址 1

透过start application
接纳需求周转的顺序,能够挑选是不是追踪内部存款和储蓄器分配和艺术调用。当关闭应用程序(能够活动或手动),Profiler自动初叶收10结果。分析结果存放在日记文件中,突显如下:

美高梅开户网址 2

 报告总结分界面如下:

美高梅开户网址 3

 Heap statistics 仓库总结新闻:DebugLZQ的那个测试程序必要分配陆.6GB的内部存储器!你有想到过啊?

Allocation
Graph:用图形展现仓库的分配情状美高梅开户网址 4

Allocated
bytes:应用程序整个运转周期内分配的目的。根据目的大小排列,不一致的颜色代码不相同的靶子,在左边会列出。以下图为例,深品红的是String对象。

美高梅开户网址 5

 Relocated
bytes:GC时被对象在托管堆中的位置被活动过的。不一样的水彩代表分裂的对象。

(简单介绍下GC进度,大致分两步:有现实算法判定哪些对象形成了垃圾堆(即依据根引用列表遍历列表引用所指向的目标,无法被遍历的目的);移动堆中的不为垃圾的靶子)

美高梅开户网址 6

Final Heap bytes:最后还在堆中的。颜色代表体系。

美高梅开户网址 7

美高梅开户网址 , Garbage
Collection Statistics
:GC总结新闻。
共计实行了450三次0代垃圾回收! 

美高梅开户网址 8

美高梅开户网址 9

 Time视图如下;从图中能够清晰的看看各次回收时间和前后内部存款和储蓄器占用量(总共4501遍)。

美高梅开户网址 10

 GC Handle: 统计GC句柄数

美高梅开户网址 11

切切实实细节如下:

美高梅开户网址 12

美高梅开户网址 13

就介绍到此处吧。

越是详细的信息,请阅读CL昂科威 Profiler
拾八页的事无巨细表达,这一个文书档案就在你释放出来的文件的根目录下,名称是CLRProfiler.doc。

 

【希望对您有救助~请点击下边包车型地铁“中黄通道”—“关怀DebugLZQ”,共同调换发展~】

可依靠本人计算机.NET的本子下载相应的CLRProfiler,笔者下载的是CL奥迪Q7 Profiler
for .NET Framework 四版本的。

小编的条件是:IIS服务器(asp.net开采的站点)+MS
sql

可依赖本身计算机.NET的版本下载相应的CLRProfiler,作者下载的是CLR Profiler
for .NET Framework 四版本的。

下载后提示解压缩,选用要加压到的目录;然后进入D:\SoftWare\CLRProfiler4\CLRProfiler\Binaries目录下抉择相应操作系统64位或者32位的CLRProfiler.exe。
在说一下,CLRProfiler能够分析.net平台支付的大约具有的成品,包罗C/S应用程序、服务和asp.net编排的网址等。

开采CLRProfiler分界面,选中Profiling active、Allocation和Calls,【Start
Application】是加载.net开荒的exe程序的;【Start
U奇骏L】是输入被测页面UKugaL的;

下载后指示解压缩,选取要加压到的目录;然后进入D:\SoftWare\CLRProfiler4\CLRProfiler\Binaries目录下抉择相应操作系统64位或者32位的CLRProfiler.exe。
在说一下,CLRProfiler能够分析.net平台支付的大概具有的出品,包蕴C/S应用程序、服务和asp.net编写的网址等。

评释:该工具适用于质量测试瓶颈定位,做质量测试时不建议拉开,要求安装在应用服务器所在服务器(iis和.netframework已经设置好)

美高梅开户网址 14

证明:该工具适用于品质测试瓶颈定位,做品质测试时不建议拉开,需求安装在应用服务器所在服务器(iis和.netframework已经设置好)

本人的测试情状是:IIS服务器(asp.net开采的站点)+MS
sqlserver

自家要在IE中测试asp.net开采的页面,CLR
Profiler首先要加载IIS所供给的景况变量,CLR
Profiler然后提示您加载ASP.NET应用程序和等候ASP.NET职业进度运营。

本人的测试遭逢是:IIS服务器(asp.net付出的站点)+MS
sqlserver

 

在File菜单中式点心击Profile ASP.NET

 

开垦CLRProfiler分界面,选中Profiling active、Allocation和Calls,【Start
Application】是加载.net开采的exe程序的;【Start
U汉兰达L】是输入被测页面UCRUISERL的;

美高梅开户网址 15

开发CLRProfiler界面,选中Profiling active、Allocation和Calls,【Start
Application】是加载.net开荒的exe程序的;【Start
U奥迪Q5L】是输入被测页面UPAJEROL的;

美高梅开户网址 16

美高梅开户网址 17

美高梅开户网址 18

 

甘休IIS服务或许要很短日子,须要耐心等待。最终提示能够测试页面啦

 

在IE中测试asp.Net支出的页面,CLRProfiler首先要加载IIS所需求的情形变量,CL奇骏 Profiler然后指示您加载ASP.NET应用程序和等候ASP.NET专门的学问历程运维。

“Waiting for ASP.NET to start common language runtime – this is thetime
to load your test page”

在IE中测试asp.Net付出的页面,CLRProfiler首先要加载IIS所急需的情形变量,CLQashqai Profiler然后提醒您加载ASP.NET应用程序和等待ASP.NET专门的职业进度运行。

在File菜单中式点心击Profile ASP.NET

美高梅开户网址 19

在File菜单中式点心击Profile ASP.NET

美高梅开户网址 20

点击【Start
U帕杰罗L】按键,输入我们要测试的页面U昂CoraL,点击OK,就会自行张开大家要反省里全数不自由内部存款和储蓄器的页面,多在页面中利用壹会,以便CLR
Profiler搜集越来越多的多少。

美高梅开户网址 21

美高梅开户网址 22

美高梅开户网址 23

美高梅开户网址 24

 

当已做到页面包车型客车周转,请点击CLR Profiler窗口中的 【Kill ASP.NET】。然后CLR
Profiler自动关闭IIS,移除碰到变量,重启IIS。

 

 

美高梅开户网址 25

 

甘休IIS服务或然要很短日子,必要耐心等待。最后提醒能够测试页面啦

美高梅开户网址 26

终止IIS服务只怕要相当短日子,要求耐心等待。最终提醒能够测试页面啦

“Waiting for ASP.NET to start common language runtime – this is the time
to load your test page”

美高梅开户网址 27

“Waiting for ASP.NET to start common language runtime – this is the time
to load your test page”

美高梅开户网址 28

点击【Allocation
Graph】张开内部存款和储蓄器分配视图,在那么些视图当中大家得以看到旅社是怎么着分别对象的

美高梅开户网址 29

 

美高梅开户网址 30

 

点击【Start
UKoleosL】按键,输入大家要测试的页面U福睿斯L,点击OK,就会自行张开大家要反省外有着不自由内部存款和储蓄器的页面,多在页面中动用1会,以便CL奥迪Q叁 Profiler采撷越来越多的多少。

点击【Objects by Address】开关将会来得各样措施在内部存款和储蓄器中据有的直方图分界面

点击【Start
URubiconL】开关,输入大家要测试的页面U本田UR-VL,点击OK,就会自行展开我们要检查内具备不自由内部存款和储蓄器的页面,多在页面中应用一会,以便CLLX570 Profiler收罗越来越多的数目。

美高梅开户网址 31

美高梅开户网址 32

美高梅开户网址 33

 

能够透过选中这么些视图中的某二个柱形条,右击show who
allocated。点击这么些菜单项显示关于所选分配的特定详细内容,而不是怀有分配的

 

当已成功页面包车型地铁运行,请点击CL大切诺基 Profiler窗口中的 【Kill ASP.NET】。然后CLRubicon Profiler自动关闭IIS,移除景况变量,重启IIS。

美高梅开户网址 34

当已到位页面包车型客车运转,请点击CL奥迪Q伍 Profiler窗口中的 【Kill ASP.NET】。然后CLXC90 Profiler自动关闭IIS,移除情况变量,重启IIS。

 

点击[TimeLine]开关,在展开的图片中能够清晰的见到各次回收时间和前后内部存款和储蓄器占用量情形

 

 

美高梅开户网址 35

 

美高梅开户网址 36

在view菜单中,有多数尚无显示的菜单。

美高梅开户网址 37

美高梅开户网址 38

美高梅开户网址 39

美高梅开户网址 40

美高梅开户网址 41

点击call tree
菜单,能够观望在差别线程下,全体办法占用内部存款和储蓄器大小,被调用次数等音信

美高梅开户网址 42

点击【Allocation
Graph】张开内部存款和储蓄器分配视图,在那些视图个中大家得以见见客栈是哪些分别对象的

美高梅开户网址 43

点击【Allocation
Graph】打开内部存储器分配视图,在这么些视图个中咱们得以看到仓库是何等分别对象的

美高梅开户网址 44

假定看不到图片请查看本人的另壹篇文章:

美高梅开户网址 45

 

 

点击【Objects by Address】开关将会来得各个方法在内部存储器中私吞的直方图分界面

点击【Objects by Address】按键将会来得种种艺术在内部存款和储蓄器中攻陷的直方图分界面

美高梅开户网址 46

美高梅开户网址 47

 

 

能够透过选中这么些视图中的某一个柱形条,右击show who allocated。点击那个菜单项展现关于所选分配的特定详细内容,而不是独具分配的

能够通过选中那么些视图中的某一个柱形条,右击show who allocated。点击这些菜单项展现关于所选分配的特定详细内容,而不是颇具分配的

美高梅开户网址 48

美高梅开户网址 49

 

 

点击[TimeLine]开关,在展开的图片中能够清晰的收看各次回收时间和前后内部存款和储蓄器占用量景况

点击[TimeLine]按键,在开发的图片中得以清楚的看来各次回收时间和内外内部存款和储蓄器占用量景况

 美高梅开户网址 50

 美高梅开户网址 51

 

 

在view菜单中,有无数不曾出示的菜系。

在view菜单中,有数不完从未有过显得的菜单。

美高梅开户网址 52

美高梅开户网址 53

 

 

点击call
tree 菜单,能够看到在差别线程下,全体办法占用内存大小,被调用次数等音讯

点击call
tree 菜单,能够观察在差别线程下,全数办法占用内部存款和储蓄器大小,被调用次数等音讯

 美高梅开户网址 54

 美高梅开户网址 55

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图