• CLR Profiler 性能分析工具


    CLR Profiler 性能分析工具

          CLR Profiler 有两个版本,分别用于CLR1.1 和 CLR2.0,至于CLR4试了一些也可以,但不知道是否完全兼容不,分别2003,和2005 由微软CLR性能组发布的。几百k很小巧的工具,有给出源代码,核心部分用C++写的,UI使用C#编写。CLR Profiler使用注入式测试,他会记录每一次的内存分配和方法调用,因而严重的影响程序的执行速度,会慢10~100倍的样子,而且无法直接附加到当前运行的进程。 
         CLRProfiler 是个侧重于跟踪分析GC heap的运行情况的的工具。
          使用它你可以知道:
    1.那个方法分配了那些类型的对象?
    2.那些对象存活下来了?
    3.在heap都有些什么?
    4.是什么保持对象的存活?
    5.在调用统计中可以得知方法被调用的的频率?
    6.测试应用程序,asp.net(这个我没整有成功),和service
    7.抓dump
    8.提供命令行和api(没试过)

    也有致命不足:
    1.减缓运行速度,结果不能表明程序的速度
    2.不能附加到进程
    3.他因为记录了很多内容,如果记录了很长的时间,分析的过程将会很久
    也就是这个工具,只好用来跑跑自己测试代码,其他地方只能Windbg了。

    先给张运行截图,在下面说面各种功能。

    main

    这是工具的祝界面,start application 选择需要运行的程序,可以选择是否跟踪内存分配和方法调用。当关闭应用程序(可以自动或手动),Profiler自动开始整理结果。显示如下:

    summary

    在这里显示本次统计中的汇总。

    Clr Profiler有个抓Dump的功能,当然是及时性的,在程序运行时点击show head now 即可抓取Dump同时很快的统计处分析结果。

    如下:

    dump

    dumpinfo

    在统计界面上有很多查看详情的按钮:

    heap statistic 堆栈对象信息统计

    heap statistic

    Allocated :应用程序整个启动周期内分配的对象,按照对象大小排列,不同的颜色代码不同的对象,这在右侧会列出,没有截出来,下面的也是这样:

    allocated objected

    Relocated:重新移动过的对象,GC之后内存整理移动过的对象:

    Rlocated object

    Finally head 最终堆栈内对象信息:

    final heap object

    还有object finalized 和 critical object finalized,表示被终止化器终止的对象,后面那个是特殊标记过的终止对象,图相差不大就没有截取了。

    接下来的就是垃圾回收统计

    这个归总了回收次数

    GC statistic

    GC statistic size

    TimeLine:这是详细图(貌似这个得较强的显卡渲染,在公司那机器就出不来)

    图中可以清晰的看出各次回收时间和前后内存占用量

    GC

    GC Handle 统计GC句柄数

    GC handle

    具体细节如下:

    handle

    handle2

    其他

    summery界面没有显示所有的功能:

    在View下面可以找到这些:

    main2

    在所有的柱形图上右键有如下菜单,show who allocated Is a nice one,通过他可以追踪对象是谁分配的。

    right click

    assmebly graph

    assemble graph

    class graph

    class graph

    call tree 这个功能记录每个方法的调用次数,感觉还是vs自带分析好些,那个还能统计时间占用:)

    calltree

    和进哥说起这个CLR Profiler,说回去写篇使用说明发出来。终于写好了,写篇还真花时间,这回真的理解live writer的好用,如果在网页里面编辑真要死人了。

    这是对CLR Profiler介绍性的文章,具体应用场景在看完应该也能想到。限于篇幅,很多内容没有写出来,在卸载clr profiler中会带有详细的说明,100多页,真的很详细,有了它就没必要再去查什么资料了。建议不明白的还是看看那个为好:)

  • 相关阅读:
    短信编码总结
    在Linux下用C语言实现短信收发
    sshd_config配置详解
    SSH的通讯和认证
    linux安装tacacs+服务器
    Tacacs+认证详细调研
    伪分布配置完成启动jobtracker和tasktracker没有启动
    Hadoop学习记录(7)|Eclipse远程调试Hadoop
    Hadoop学习记录(6)|Eclipse安装Hadoop 插件
    Hadoop学习记录(5)|集群搭建|节点动态添加删除
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3863933.html
Copyright © 2020-2023  润新知