.Net Profiler

  • Thread starter Thread starter Franco Gustavo
  • Start date Start date
F

Franco Gustavo

Hi, All

What's is the best .net profiler for Debug an application. I have to buy one
but I don't know which one!!
I tried some of them like Borland and AQTime.

My big problem is, my application is a big application, and many times I
have many EventHandlers associated to an object, then this object never is
free from the memory.
AQTime for .Net can tell me how many references of EventHandler the object
has. But it can't tell me who create this reference.

So for fix it is a pain in the a... because I have to see line by line in my
code to may be know who can create this reference.

Borland so far is not usefull for nothing... Expensive and doesn't provide
nothing for debug, just to see the application performace that's it

Then the question is, there are some .Net profiler that can tell me who
create the references to the EventHandlers? if there are not profiler to do
that. How can I fix it with out look line by line in my code.

Thanks,
Gustavo.
 
If you have to build a profiler customize for your application
you can start from this link to the SSCLI profiler core source
code.

http://www.slink-software.com/W/SrcDoc_Top/sscli/sscli.sdoc/N_36

It is not a bad place to start understand the CLI profiler hooks and
its potential too.

sscli.sdoc
BuildInfo
Source Code Roadmap:
App Domain
Marshaler
Profiler
ProfToEEInterface - proftoeeinterfaceimpl.h:34
CorProfInfo - profile.h:64
ICorProfilerInfo - corprof.h:1889
CProfilerCallback - profilercallback.h:9
ObjectsAllocatedByClass - profilercallback.cpp:545
 
Hi,

Our .NET Memory Profiler gives you information about the callstack of all
allocations, it also tells you which root references are keeping an instance
from being garbage collected. I think it will help you solve your problem. A
trial version can be downloaded at: http://www.scitech.se/memprofiler

Best regards,

Andreas Suurkuusk
SciTech Software AB
 
Hi, I tried your profiler but it only show the call stack who created the
object, it doesn't show any information about the delegates associated to
this object, so I dispose and make the object = null but the object is never
collected and you don't know which reference still are made to this object.

Anyway thanks, I'll keep searching
Gustavo.
 
Very nice tool to test performance, I think I'll buy it for performance
issues, but it is not useful for debugging proposes, it doesn't show
anything about references from delegates.



Thanks,

Gustavo.
 
Hi,

I don't quite understand what information you want. In the current version
we only present the referees of an instance (i.e. other instances that have
references to the selected instance). We do not present the references from
the selected instance (in the upcoming version we present the outgoing
references as well). But if you have an instance that is never collected,
it's only the referees that are responsible for the instance not being
collected. No matter how many other instances the selected instance refers
to, it will not affect garbage collection of this instance (it will however
affect the garbage collection of the instances it references).

The root paths presented for each instance is directly telling you why an
instance has not been collected. If there is at least one root path, then
the instance is reachable and cannot be collected.

Just for your information, there's no need to keep a reference to the event
handler in the event consumer class, since delegates use an equality
comparison (on the method and instance) when removing a delegate (though,
there can be a very small performance gain in keeping a reference to the
event handler).

If you need any additional information, please ask.

Best regards,

Andreas Suurkuusk
SciTech Software AB
 
Back
Top