内存平铺管理和大对象c#

本文关键字:对象 管理 内存 | 更新日期: 2023-09-27 18:02:47

我有一组图像存储在类型为Int16的3D数组中,我缓存的图像数量可以达到600张或更多,这会影响内存性能和垃圾收集性能。我听说内存平铺可以增强内存管理,因为它将子数组元素设置在单独的块中。
-我可以在我的情况下使用内存平铺吗?
-如果是,我如何使用?

内存平铺管理和大对象c#

我可以在我的情况下使用内存平铺吗?

是的。int16[,,]的3d数组必须是一个内存块。把它切成片,它们已经变小了。([][,]).

要收集的东西越少越好。多维数组将被视为单个分配:

short[,,] a = new short[2,3,4];

锯齿数组将使用许多不同的分配。它较小的分配大小可能会更快地分配,但它可能会在收集期间给GC带来更大的压力:

short[][][] a = new short[2][][];

我以前从来没有听说过"记忆平铺",所以如果你能解释一下这是什么,我可能能更好地回答你的问题。