什么是ObjectPoolProvider,为什么ASP.NET Core IservCollection默认注入了此内



我已经注意到,设置新的ASP.NET核心应用程序的服务汇总具有microsoft.extensions.objectpool.objectpool.objectpool.objectpoolprovider,默认情况下由框架注入。为什么这是这种情况,更重要的是,我们什么时候应该使用它以及如何使用。

google搜索的搜索不会对我可以找到的作用以及我可以在Learn.microsoft.com上找到的文档产生任何结果。

对象池通常用于减少创建/初始化对象的新实例(例如数据库连接池(或减少释放资源的影响(例如,最小化垃圾收集或防止垃圾收集的影响(堆的内存碎片(

看起来对Objectpool最近已在此处记录:https://learn.microsoft.com/en-us/aspnet/core/performance/objectpool?view= aspnetcore-3.0

摘录一个摘录,描述一个例子:" ... ASP.NET核心框架在某些地方使用对象池重复使用StringBuilder实例。StringBuilder分配和管理自己的缓冲区以容纳字符数据。"

默认情况下,与您在IOC容器中注册的问题有关,它看起来现在已从Net Core 3.0中的默认值中删除 - 请参阅此pr:https://github.com/aspnet/aspnet/aspnetcore/拉/6437和公告:https://github.com/aspnet/Announcements/issues/336: - (

如果您对实施详细信息感兴趣,则此答案中有大量信息:C#对象池模式实现

最新更新