Skip to main content

Namespace ServiceStack.Text.Pools

Classes

BufferPool

Courtesy of @marcgravell https://github.com/mgravell/protobuf-net/blob/master/src/protobuf-net/BufferPool.cs

CharPool

ObjectPool<T>

Generic implementation of object pooling pattern with predefined pool size limit. The main purpose is that limited number of frequently used objects can be kept in the pool for further recycling.

Notes: 1) it is not the goal to keep all returned objects. Pool is not meant for storage. If there is no space in the pool, extra returned objects will be dropped.

2) it is implied that if object was obtained from a pool, the caller will return it back in a relatively short time. Keeping checked out objects for long durations is ok, but reduces usefulness of pooling. Just new up your own.

Not returning objects to the pool in not detrimental to the pool's work, but is a bad practice. Rationale: If there is no intent for reusing the object, do not use pool - just use "new".

SharedPools

Shared object pool for roslyn

Use this shared pool if only concern is reducing object allocations. if perf of an object pool itself is also a concern, use ObjectPool directly.

For example, if you want to create a million of small objects within a second, use the ObjectPool directly. it should have much less overhead than using this.

StringBuilderPool

Structs

PooledObject<T>

this is RAII object to automatically release pooled object when its owning pool