ObjectPool<T> — reuse expensive objects to reduce allocations.
Setup:
1builder.Services.AddObjectPoolBuilder()2 .AddPipeline<MyObject>(policy =>3 {4 policy.MaximumRetained = 100;5 policy.Factory = () => new MyObject();6 });
Usage:
1public class MyService(ObjectPool<StringBuilder> pool)2{3 public string Process(string input)4 {5 var sb = pool.Get();6 try7 {8 sb.Append(input);9 return sb.ToString();10 }11 finally12 {13 pool.Return(sb);14 }15 }16}
Built-in pools:
Benefits: