Prady
Prady

Reputation: 11310

How can I find out how many objects are created of a class

How can I find out how many objects are created of a class in C#?

Upvotes: 8

Views: 5296

Answers (2)

Michael
Michael

Reputation: 20049

Is this a class that you've designed?

If so, add a counter to the class that is incremented in the constructor and decremented in Dispose.

Potentially you could make this a performance counter so you can track it in Performance Monitor.

Upvotes: 2

Jon Skeet
Jon Skeet

Reputation: 1500525

You'd have to put a static counter in that was incremented on construction:

public class Foo
{
    private static long instanceCount;

    public Foo()
    {
        // Increment in atomic and thread-safe manner
        Interlocked.Increment(ref instanceCount);
    }
}

A couple of notes:

  • This doesn't count the number of currently in memory instances - that would involve having a finalizer to decrement the counter; I wouldn't recommend that
  • This won't include instances created via some mechanisms like serialization which may bypass a constructor
  • Obviously this only works if you can modify the class; you can't find out the number of instances of System.String created, for example - at least not without hooking into the debugging/profiling API

Why do you want this information, out of interest?

Upvotes: 14

Related Questions