Search code examples
c#memory-managementobjectpooling

When to go for object pooling?


When to go for object pooling using C#? Any good ex...

What are the pro's and con's of maintaining a pool of frequently used objects and grab one from the pool instead of creating a new one?


Solution

  • There are only two types of resources I can think of that are commonly pooled: Threads and Connections (i.e. to a database).

    Both of these have one overarching concern: Scarcity.

    • If you create too many threads, context-switching will waste away all of your CPU time.
    • If you create too many network connections, the overhead of maintaining those connections becomes more work than whatever the connections are supposed to do.
    • Also, for a database, connection count may be limited for licensing reasons.

    So the main reason you'd want to create a resource pool is if you can only afford to have a limited number of them at any one time.