Ahmad Hamzavi
Ahmad Hamzavi

Reputation: 686

Does C# method take memory?

What happens in memory when there is a class with 50 methods and we create 50 object instances of that class? What is the best solution for having an object with a lot of functionality and less memory usage?

Upvotes: 4

Views: 2504

Answers (2)

Alexei Levenkov
Alexei Levenkov

Reputation: 100547

Yes, C#/.Net methods require memory on per-AppDomain basis, there is no per-instance cost of the methods/properties.

Cost comes from:

  • methods metadata (part of type) and IL. I'm not sure how long IL stays loaded as it really only needed to JIT so my guess it is loaded as needed and discarded.
  • after method is JITed machine code stays till AppDomain is unloaded (or if compiled as neutral till process terminates)

So instantiating 1 or 50 objects with 50 methods will not require different amount of memory for methods.

Upvotes: 6

Krishna Yadav
Krishna Yadav

Reputation: 29

Firstly the memory usage and functionality is not based on the object, its based on the class of which we are making an object... hence if you are making a object of a class you are able to access all the functionality of that class.. and according to me its a better option to use a object for accessing a class functionality

Upvotes: 2

Related Questions