2016-02-12 7 views
2

Итак, я работал над игрой Win2D и заметил, что время от времени некоторые кадры пропускались. Я предположил, что это GC, поэтому я взял пару снимков памяти, чтобы посмотреть, что происходит. Позаботившись о моей части проблемы и выделив всю свою память в начале игры, я заметил, что много Задача < IReadOnlyList < Windows.Storage.StorageFile >> объекты все еще создавались во время игры. Это также происходило в пустом универсальном проекте приложения, и после осмотра я понял, что приложение Insights включено по умолчанию и вызывает все это.Приложение Insights, вызывающее ненужный GC в игре Win2D

Я не очень разбираюсь в характеристиках приложений, но мне кажется, что-то приятное. Итак, мой вопрос: могу ли я по-прежнему использовать Application Insights, но не позволять ему создавать все эти объекты задач и получать доступ к файловой системе?

ответ

3

ApplicationInsights использует PersistenceChannel, что всякий раз, когда создается объект телеметрии, он хранит его на диске, а затем считывает его и отправляет (и в случае отсутствия подключения к Интернету сохраняет его обратно и пытается позже). Вы можете заменить его на InMemoryChannel, который будет отправлять только телеметрию (но в случае отказа телеметрический элемент будет потерян). Эта реализация должна быть более легкой, поскольку ей не нужен доступ к хранилищу, но обратите внимание, что она также не имеет политики повтора. Так на старте вы могли бы сделать что-л так:

TelemetryConfiguration.Active.Channel.Dispose(); // you may need to cast it here to persistence channel TelemetryConfiguration.Active.Channel = new InMemoryChannel();

 Смежные вопросы

  • Нет связанных вопросов^_^