我有一组存储在Int16
类型的3D数组中的图像,我缓存的图像数量最多可达600个或更多图像,这会影响垃圾收集性能的内存性能。
我听说内存切片可以增强内存管理,因为它将子数组元素设置在一个单独的块中
- 在我的情况下,我可以使用记忆瓦片吗?
- 如果是,我该如何使用它?
答案 0 :(得分:3)
我可以在我的情况下使用内存平铺吗?
是。 int16 [,,]的3d数组必须是一块内存。把它放入切片中它们已经变小了。 ([] [,])。
其余的取决于您的确切需求。
答案 1 :(得分:1)
垃圾收集将受益于尽可能少收集的东西。多维数组将被视为单个分配:
short[,,] a = new short[2,3,4];
锯齿状数组将使用许多不同的分配。它的分配大小可能要快得多,但在收集过程中可能会给GC带来更大的压力:
short[][][] a = new short[2][][];
我之前从未听说过“记忆平铺”,如果你能解释那是什么,我可能会更好地回答你的问题。