继续从Understanding VS2010 C# parallel profiling results,但更重要的是讨论:每线程内存管理在C#
我有很多,在并行工作线程(使用的Parallel.For /每次),它使用许多内存分配小班。
这会在全局内存分配器线程上产生争用。
有没有办法指示.NET为每个线程预分配一个内存池,并从该池中进行所有分配?
目前我的解决办法是我自己的实现内存池(T型,这是在线程之间循环的对象的全局分配阵列),帮助了很多,但效率不高,因为:
- 我可以” t指示.NET从特定的内存片分配。
- 我仍然需要多次拨打新的来分配池的内存。
谢谢,
哈
是否有可能使T成为值类型并将其分配到堆栈而不是堆中? – 2010-05-26 13:58:03
这里有什么问题。你的程序运行缓慢吗?内存不足,即。崩溃?只是使用大量的内存? – 2010-05-26 14:02:09
@tehMich:我不这么认为。这些对象是复合类,将它们分解为单独的变量或数组将会很麻烦。此外,他们需要大量,我不知道会适合堆栈(我说的是数十兆字节)。 – Haggai 2010-05-26 15:03:39