Возможно ли повторно использовать память, использованную в преобразовании массива строки в байты?
Приложение должно отправлять большие строки по сети со скоростью 60 кадров в секунду. Это, кажется, оказывает слишком большое давление на GC. Так можно ли как-то повторно использовать байтовые массивы, созданные преобразованием строк?
Это мои текущие методы сериализации:
public static byte[] SerializeJson(DrawDescriptionLayer layer)
{
var s = JsonConvert.SerializeObject(layer, js);
return Encoding.UTF8.GetBytes(s); //rent from array pool here
}
Или используя потоки:
public static byte[] SerializeJson2(DrawDescriptionLayer layer)
{
using (var ms = new MemoryStream())
using (StreamWriter writer = new StreamWriter(ms, Encoding.UTF8))
using (JsonTextWriter jsonWriter = new JsonTextWriter(writer))
{
JsonSerializer ser = JsonSerializer.Create(js);
ser.Serialize(jsonWriter, layer);
jsonWriter.Flush();
return ms.ToArray(); //rent from array pool here
}
}
Мне известно, что я должен написать собственный двоичный сериализатор, но Newtonsoft.Json работал из коробки, и приложение использует сторонние типы, которые не имеют атрибутов сериализации.