J'ai regardé dans l'implémentation de Array.Resize() et j'ai remarqué qu'un nouveau tableau est créé et retourné. Je vise une allocation de mémoire nulle pendant le jeu et je dois donc éviter de créer de nouveaux types de référence. Le redimensionnement d'un tableau déclenche-t-il le Garbage Collector sur le tableau précédent? Je crée mon propre resizer tableau 2D, mais il fonctionne essentiellement de la même manière que la méthode .NET Resize()
.Le redimensionnement de tableau invoque-t-il le GC?
Si le nouveau tableau est plus petit que le précédent, mais que les objets en excès ont déjà été replacés dans un pool d'objets génériques, cela appellera-t-il le GC?
Les tableaux seront constamment créés dans ma boucle de jeu, je dois donc essayer de le rendre aussi efficace que possible. J'essaie de créer un array pool
en tant que tel, de sorte qu'il ne soit pas nécessaire de continuer à les créer en jeu. Toutefois, si la méthode de redimensionnement fait la même chose, il est peu logique de ne pas simplement instancier un nouveau tableau au lieu d'avoir le pool.
Merci pour l'aide
Peut-être que vous pourriez utiliser 'List' qui est fondamentalement un tableau redimensionné automatique, et je suppose que lorsque vous le réduire, il ne réduit pas le tableau immédiatement ... mmh je dois vérifier ... –
digEmAll
@digEmAll: 'List' utilise 'T []' en interne mais fait le redimensionnement pour vous. En d'autres termes: il va créer de nouvelles instances. –
Merci pour le suggetsion. Une liste d'une liste m'a traversé l'esprit (car j'utilise des tableaux 2D) mais c'est un peu plus compliqué pour mon jeu. – keyboardP