何时使用 C# 进行对象池?有什么好的前任吗...
维护一个经常使用的对象池并从池中获取一个而不是创建一个新对象有什么优点和缺点?
我能想到的只有两种类型的资源通常被池化:线程和连接(即数据库)。
两者都有一个首要关注点:稀缺性。
因此,您想要创建资源池的主要原因是您在任何时候只能拥有有限数量的资源。
。它包括一个带有测试程序的通用对象池。该对象池确实支持最小和最大大小。我找不到任何在生产中使用它的人的参考资料。有人这样做过吗?另外,在处理 ASP.NET 应用程序中的内存碎片后,我可以证明 Miky Dinescu 的答案的价值。另外,稍微阐述一下 Vitaly 的答案,考虑创建成本高昂的大型对象(即 > 85K)的情况。大对象仅参与 Gen 2 垃圾回收。这意味着它们的收集速度不会像第 0 代和第 1 代中完全参与垃圾收集的对象那样快。本文《大对象堆》由 Maoni Stephens 揭秘 在 http://msdn.microsoft.com/en-us/magazine/cc534993.aspx 详细解释了大对象堆。