【发布时间】:2012-11-12 12:49:35
【问题描述】:
您有什么解决方案,如何使对象池(内存池)可以包含不同的不同大小的数据?因此,如果我在内存池中请求具有一定大小的对象,它会返回给我一些分配的内存块,其大小与我的请求最接近。它应该用 C# 编写。谢谢,因为我真的不完全知道,这个和最佳算法的最佳集合是什么。在 C++ 中有一些解决方案,但 C# 没有内存池。
【问题讨论】:
-
那是因为你不需要它......在C#中,内存管理由CLR处理。或者,在您的情况下,为什么需要进行显式内存管理?
-
你需要它做什么?如果我没记错的话,内存池是用来避免堆碎片的。在 C# 中,垃圾收集应该负责处理这些事情,因此您不需要它。
-
是的,我知道,我必须编写通信库,它允许客户端与服务器通信(通过特定的自己的协议),客户端(或多个客户端)向服务器发送数据,数据形式为消息(字符串)+ 数据(不同的大小和格式)。但是这种通信可以不间断地运行两到三周,因此它可以在通信期间发送数千条带有数据的消息。我的老板告诉我,他认为 Garbage Collection 不够好,我应该写 Memory Pool。但在这方面,我没有技能(记忆块等)。
标签: c# memory garbage-collection memory-pool