池化对象 RecyclableMemoryStream 在 .netcore 中的使用
|
意思很明显,专用于取代 MemoryStream 而生,RecyclableMemoryStream 可以最大限度的避免 Stream 操作在 GC 上的 LOH (大对象堆)的分配和内存碎片,泄露等烦人的问题,这篇文章我们将会讨论 Microsoft.IO.RecyclableMemoryStream 及如何在 .NET Core 应用程序中提升性能。 RecyclableMemoryStream 的价值 RecyclableMemoryStream 大体上提供了如下四点价值。
RecyclableMemoryStream 的原理 RecyclableMemoryStream 在2代堆上存储了一个用于流的大型缓冲区,并能够确保这个缓冲区在进程的生命周期内一直存在,这就确保了GC不会频繁的出现全量回收,同时 RecyclableMemoryStreamManager 类维护了两类缓冲池。
值得注意的是,大型缓冲池的扩容又分为 线性增长 和 指数型增长,可以看出内存可被高效的反复使用并且对调用者还是无感知的,这就是为什么 RecyclableMemoryStream 比 MemoryStream 更好更高效的原因。
当调用 GetBuffer() 方法时,小缓冲区将会转换为一个大的连续缓冲区,如下代码所示 (编辑:张家口站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


