我有一组图像,存储在一个Int16
类型的三维数组中,我可以缓存的图像数量可以达到600张或更多,这会影响内存性能和垃圾回收性能。我听说过内存分块可以增强内存管理,因为它将子数组元素设置在单独的块中。
- 我可以在我的情况下使用内存分块吗?
- 如果可以,我该如何使用它?
我有一组图像,存储在一个Int16
类型的三维数组中,我可以缓存的图像数量可以达到600张或更多,这会影响内存性能和垃圾回收性能。我听说过内存分块可以增强内存管理,因为它将子数组元素设置在单独的块中。
- 我可以在我的情况下使用内存分块吗?
- 如果可以,我该如何使用它?
我能在我的情况下使用内存平铺吗?
可以。一个 int16 [,,] 的三维数组必须是一个连续的内存块。将其切片,它们就会变得更小。([][,])。
其余的取决于您的确切需求。
short[,,] a = new short[2,3,4];
short[][][] a = new short[2][][];
new short[n][][]
还是new short[x,y,z]
?换句话说,它是真正的多维数组还是交错数组?你如何知道它会影响垃圾回收性能? - svick