繼續從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