|
直想找个能画出软件中函数关系调用图的工具软件,网上找了很久,找到的大都是C++或Java的,能在.net环境下用的很少!今天,元宝向大家推荐一款软件:CLR Profiler,这个软件本来是.NET程序分析优化软件,用来看函数关系调用图,真是”牛刀小试“了! 以下是是微软件msdn.com上的原文 Use CLR Profiler for C# Call Graphs and Optimization
|
|
视图 |
对应的描述 |
|
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 |
展示被垃圾回收器迁移的对象(因为它们在垃圾回收过程中被保留) |
|
Objects By Address |
显示在指定的时间托管堆上都有哪些对象 |
|
Histogram By Age |
允许你查看托管堆上对象的生命期 |
|
Allocation Graph |
图形化显示对象分配的调用堆栈,你可以使用该视图: -查看每个方法的内存消费 -找出你不期望的内存分配 -找到有可能过度分配内存的方法 |
|
Assembly, Module, Function, and Class Graph |
这四个视图很相似.你可以看到某个方法涉及到哪些Assembly,哪些类,哪些模块,哪些函数 |
|
Heap Graph |
显示托管堆上的所有对象,以及它们的相关联对象. |
|
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. |