Un grand suspect est le object
dans votre paramètre object[] args
. Cela ressemble à un problème de boxe et de déballage.
Lorsque vous appelez la fonction WriteArgs
et passer quelque chose, il effectuera boxe pour convertir ce paramètre à object
.
Je ne sais pas ce que le Stream.WriteObject
est ou où vous avez obtenu cela, mais si cela prend object
comme paramètre trop et quand il entrer dans la fonction WriteArgs
, il se produira également unboxing afin d'utiliser la variable qui passe à lui. Les deux boxe et unboxing allouent de la mémoire.
FIX:
Retirez object[] args
et créer plusieurs pour votre fonction surcharges WriteArgs
qui peut gérer différents types d'objets en tant que paramètre.
Aussi, faites la même chose pour le Stream.WriteObject
si vous l'avez écrit ou trouvez une autre fonction pour cela. Vous pouvez en savoir plus sur boxe et unboxinghere.
EDIT:
La question la boxe et unboxing décrit ci-dessus appliquent uniquement aux Value Types. Si vous passez déjà Reference Type à cette fonction alors le seul problème ici est la fonction Stream.WriteObject
.
Bien que vous utilisez un 'Stream' qui est une ressource non gérée – Rahul
Quel type est Stream? – Polyfun
Pourquoi vous souciez-vous de 2KB? Courez-vous dans un environnement à contrainte de mémoire? – mjwills