System.Buffers命名空间究竟有何神奇之处?
- 内容介绍
- 文章标签
- 相关推荐
本文共计845个文字,预计阅读时间需要4分钟。
最近研究了.net core 2.1的基础类库,发现它引入了System.Buffers命名空间,其中提供了一系列实用对象,简化了内存管理。例如,ArrayPool是数组类型对象,方便管理内存。
最近研究了一下.net core 2.1的基础类库,发现它引入了一个System.Buffers名字空间,里面提供了一系列比较实用的对象,便简单的管中窥豹浏览一下。
ArrayPool<T>
ArrayPool<T>是一个数组类型的对象池,本身ArrayPoo<T>是一个抽象类,但他有一个默认的实现ArrayPoo<T>. Shared,使用方法如下:
var pool = ArrayPool<byte>.Shared; var buffer = pool.Rent(2048); try { //使用buffer } finally { pool.Return(buffer); //归还buffer后不要再使用 }
方法比较简单:
- 通过Rent从对象池中申请buffer
- 使用完后,通过Return将buffer归还至对象池
微软的文档上并没有详细描述默认的ArrayPoo<T>的对象申请算法。
本文共计845个文字,预计阅读时间需要4分钟。
最近研究了.net core 2.1的基础类库,发现它引入了System.Buffers命名空间,其中提供了一系列实用对象,简化了内存管理。例如,ArrayPool是数组类型对象,方便管理内存。
最近研究了一下.net core 2.1的基础类库,发现它引入了一个System.Buffers名字空间,里面提供了一系列比较实用的对象,便简单的管中窥豹浏览一下。
ArrayPool<T>
ArrayPool<T>是一个数组类型的对象池,本身ArrayPoo<T>是一个抽象类,但他有一个默认的实现ArrayPoo<T>. Shared,使用方法如下:
var pool = ArrayPool<byte>.Shared; var buffer = pool.Rent(2048); try { //使用buffer } finally { pool.Return(buffer); //归还buffer后不要再使用 }
方法比较简单:
- 通过Rent从对象池中申请buffer
- 使用完后,通过Return将buffer归还至对象池
微软的文档上并没有详细描述默认的ArrayPoo<T>的对象申请算法。

