我查看了 Array.Resize() 的实现方式并注意到它会创建一个新的数组并返回。我希望在游戏过程中尽量避免分配内存,因此需要避免创建任何新的引用类型。调整数组大小是否会触发先前数组的垃圾回收?我正在创建自己的 2D 数组调整器,但它基本上和 .NET 的 Resize() 方法一样。
如果新数组比以前的小,但多余的对象已经被放回到通用对象池中,这是否会调用垃圾回收?
在我的游戏循环中将不断创建数组,所以我需要尽可能地提高效率。我正在尝试创建类似于数组池的东西,以便不需要在游戏中不断地创建它们。然而,如果调整大小方法也是如此,那么与其使用池,倒不如只实例化一个新数组。
感谢您的帮助。
如果新数组比以前的小,但多余的对象已经被放回到通用对象池中,这是否会调用垃圾回收?
在我的游戏循环中将不断创建数组,所以我需要尽可能地提高效率。我正在尝试创建类似于数组池的东西,以便不需要在游戏中不断地创建它们。然而,如果调整大小方法也是如此,那么与其使用池,倒不如只实例化一个新数组。
感谢您的帮助。
List<T>
,它基本上是一个自动调整大小的数组,我猜当你缩小它时,并不会立即减少数组的大小...嗯,我得检查一下... - digEmAllList<T>
内部使用T[]
,但会为您执行调整大小操作。换句话说:它会创建新实例。 - Brian Rasmussen