【发布时间】:2013-06-11 12:26:31
【问题描述】:
我确信这个答案将取决于用户机器,但必须有一些固定数据的最佳实践。
我需要保存 5 个字节数组,每个字节包含 1.048.576 个字节。通常我更喜欢使用GCHandle(托管)内存,但有些人说它会减慢GC。我知道这可能会发生,但是需要固定多少内存/对象才能开始真正影响 GC?
以下是我的选择:
-
GCHandle.Alloc GCHandleType.Pinned(托管)。它会减慢 GC?? -
Marshal.AllocHGlobal(非托管访问)。不安全的代码 - 使用
Bitmap将数据保存在Scan0(非托管访问)中。不安全的代码
【问题讨论】:
-
固定五个 1 MB 的分配不会对 GC 产生任何影响。或者别的什么,就此而言。为什么不试试呢?我强烈怀疑它会正常工作。我还严重怀疑使用您列出的任何一种替代方案会明显更快或更慢。
标签: c# garbage-collection unmanaged