c# - 不同大小对象的内存池 - C#

标签 c# memory garbage-collection memory-pool

您是否有一些解决方案,如何使用可以包含不同不同大小的数据的对象来创建对象池(内存池)?因此,如果我请求内存池中具有一定大小的对象,它会返回给我一些已分配的内存块,其大小与我的请求最接近。它应该用C#编写。谢谢,因为我真的不知道什么是这个最好的集合和最好的算法。 C++ 中有一些解决方案,但 C# 没有内存池。

最佳答案

.Net Framework 已经有这样的实现(由 Windows Communication Foundation 使用)。请参阅BufferManager

var buffMgr = BufferManager.CreateBufferManager(
                 104857600, // use no more than 100 MB in total
                 10485760);  // allocate 10 MB max to each buffer
var buff = buffMgr.TakeBuffer(65535); // allocate a buffer enough to fit a 65 KB object
                           // note: this could return a buffer bigger than 65 KB 

//when done with the buffer:
buffMgr.ReturnBuffer(buff);

关于c# - 不同大小对象的内存池 - C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13344018/

相关文章:

pointers - NXT 上的 NXC 中没有指针的内存测试操作?

.net - 我的对象总是 "be there"吗?

c# - 在类主体之外但在 namespace 内的枚举定义

c# - c#中的对象数组消耗多少内存?

php - 如何修复内存耗尽的postgresql

C# 禁用 USB ReadPipe 的垃圾回收

java - 即使Xms = Xmx,G1GC也会向操作系统释放内存吗?

c# - WPF - 检测转换器中的设计模式

c# - 自动添加/修改usings

c# - 如何使用 C# 和 ASP.net 代理 WebRequest?