MemoryPool 和ArrayPool ]之间的差异 据我所知,MemoryPool和ArrayPool之间有什么区别,它们都做相同的事情(放出缓冲区以减少垃圾收集压力)。 在读取调用中是否存在首选使用NetworkStream或NetworkStream的池? 据我所知,MemoryPool和ArrayPool有什么区别,它们都做相同的事情(放出缓冲区以减少垃圾收集压力)。是否有应为...的游泳池? WebSocket类出租 Arrays 。换句话说,WebSocket方法返回ArrayPool<T>。 Rent属性返回T[]的默认实现,Shared以存储桶的ArrayPool<T>数组和本地每核“堆栈”的组合的形式缓存后备数组。针对TlsOverPerCoreLockedStacksArrayPool和ThreadStatic情况进行了优化。从char方法返回的byte将基础数组存储在ConfigurableArrayPool数组中(每个数组都有自己的数组)。另外,您可以编写自己的实现。 另一方面,Create更为通用,因为它最终处理Buckets对象。 MemoryPool<T>方法提供Memory<T>实现,这些实现负责[[owning Rent。内存所有者可以由各种来源支持,数组是其中之一。 IMemoryOwner<T>单例实际上是Memory<T>,您猜对了MemoryPool<T>.Shared。但是内存池可能由不同的来源支持,例如由ArrayMemoryPool<T>指向的非托管内存/内存。 使用哪种取决于您的要求: 如果您正在使用的API需要ArrayPool<T>.Shared,或者您只是想要一个无分配数组,那么您想使用SafeHandle。 如果您正在使用T[]实例,那么您想使用ArrayPool<T> [如果您使用的API可以采用任何一种,那么使用一个池而不是另一个池不一定有好处。与Memory<T>相比,API本身在原始MemoryPool<T>上的工作效果可能更好(反之亦然),但是API应该只在乎内存本身,而不知道它来自哪个池。

问题描述 投票:2回答:1
据我所知,MemoryPoolArrayPool之间有什么区别,它们都做相同的事情(放出缓冲区以减少垃圾收集压力)。

在读取调用中是否存在首选使用NetworkStreamNetworkStream的池?

据我所知,MemoryPool和ArrayPool有什么区别,它们都做相同的事情(放出缓冲区以减少垃圾收集压力)。是否有应为...的游泳池?

c# .net .net-core memory-management
1个回答
1
投票
WebSocket类出租

Arrays

。换句话说,WebSocket方法返回ArrayPool<T>Rent属性返回T[]的默认实现,Shared以存储桶的ArrayPool<T>数组和本地每核“堆栈”的组合的形式缓存后备数组。针对TlsOverPerCoreLockedStacksArrayPoolThreadStatic情况进行了优化。从char方法返回的byte将基础数组存储在ConfigurableArrayPool数组中(每个数组都有自己的数组)。另外,您可以编写自己的实现。
© www.soinside.com 2019 - 2024. All rights reserved.