.net快速内存分配

| 在我的应用中,有些情况下对象相对较小(最多50个字节),例如用于记录目的的消息类,必须在程序执行期间频繁创建和释放(由GC)。因此,我担心这些对象的动态分配的开销。如本问题所述,对于本机代码,有一些可用的快速内存分配器。 .Net中有快速内存分配的概念吗?.Net中是否需要快速内存分配?如果不能,那么可以使用什么来加快这种实现? (也许是某种预分配的对象池。)我是否应该担心开销?     
已邀请:
由于它应该设计得当,所以只有一种分配垃圾收集内存的方法。它非常快,分配仅需要调整指针。比本机代码必须使用的分配器快得多。要做的工作要困难得多,一旦分配了本机内存,就无法再移动它了。这使得编写没有碎片的分配器变得很困难。这些对策会增加开销。在GC堆中这不是问题,它可以压缩。 您无法提高GC分配器的速度。     
除非并且直到您的探查器为您提供硬数据来支持这种担忧,否则您不必担心开销。 我想您也许可以使用
unsafe
代码来实现分配器,但是值得一提的是:您必须配置文件才能知道。     
如果物体很小且寿命短,我不会太担心。它们很可能是通过Gen0 GC收集的,Gen0 GC通常相对便宜。 您可以实现一个池,但是根据我的经验,这仅在您分配大对象(如果我记得正确,如果它们大于约80kB放置在大对象堆上)或非常多(每秒数百万个)的情况下才需要)对象。 因此,请先正常实施。而且只有当您发现程序在GC中花费大量时间时,您才需要担心分配。您很可能正在考虑过早的优化。     

要回复问题请先登录注册