Miré en la implementación de Array.Resize() y noté que se creaba y devolvía una nueva matriz. Mi objetivo es la asignación de memoria cero durante el juego, así que debo evitar crear nuevos tipos de referencia. ¿Cambiar el tamaño de una matriz activa el Recolector de basura en la matriz anterior? Estoy creando mi propio redimensionador de matriz 2D, pero básicamente funciona de la misma manera que el método .NET Resize()
.¿Cambia el tamaño de la matriz al GC?
Si la nueva matriz es más pequeña que la anterior, pero los objetos en exceso ya se han vuelto a colocar en un conjunto de objetos genérico, ¿invocará esto al GC?
Las matrices se crearán constantemente en mi ciclo de juego, así que debo tratar de hacerlo lo más eficiente posible. Intento crear un array pool
como tal, para que no haya necesidad de seguir creando en el juego. Sin embargo, si el método de cambio de tamaño hace lo mismo, no tiene mucho sentido no crear una nueva matriz en lugar de tener la agrupación.
Gracias por la ayuda
Quizás podría usar 'List' que es básicamente una matriz de redimensionado automática, y supongo que cuando la reduzca, no reducirá la matriz de inmediato ... mmh Tengo que comprobar ... –
digEmAll
@digEmAll: 'List' utiliza 'T []' internamente pero cambia el tamaño para usted. En otras palabras: creará nuevas instancias. –
Gracias por la sugerencia. Una lista de una lista pasó por mi mente (ya que estoy usando arreglos 2D) pero es un poco más complicada para mi juego. – keyboardP