CLR Profiler-添加到现有流程
时间:2020-03-05 18:44:46 来源:igfitidea点击:
我想在.Net 2.0上使用CLR Profiles之类的东西来查看什么对象在给定的时间(在ASP.Net辅助进程中)正在堆中占用更多空间。
但是,CLR Profiler只允许我启动一个应用程序,而不能添加到现有的应用程序上。我认为这是因为它也跟踪分配和GC,但是我对此并不十分感兴趣。我只想对堆的当前状态进行快照,并向我展示其中存在什么以及每种对象有多少个对象,以及每种对象类型正在使用多少个字节。
有任何想法吗?
解决方案
回答
我们是否看过RedGates .NET Profiler?
自从我使用它已经有一段时间了,但是我无法确定我们可以随时添加到任何CLR进程。
回答
.Net Memory Profiler正是我们所需要的。它不是免费的,但是有一个试用版。实际上,我是通过试用来发现我们上一个项目的漏洞。一个值得注意的功能是:
Easily identify memory leaks by collecting and comparing snapshots of .NET memory
我认为这是我们要寻找的。
回答
- 添加调试器
数据库-p
- 加载.net调试器扩展
.loadby sos mscorwks
- 以CLRProfiler可以理解的格式转储堆
!TraverseHeap heap.txt
- 分离调试器
d
- 在clrprofiler应用程序中加载heap.txt
回答
来自MSDN的本文讨论了如何使用免费的CLR Profiler与堆栈实例进行比较。没错,我们目前无法将CLR Profiler添加到正在运行的进程中(本文解释了原因),但是,就其价值而言,听起来我们将能够很快。