Application Insights, вызывающий ненужный GC в игре Win2D

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

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


person Stefan Mihai Stanescu    schedule 12.02.2016    source источник


Ответы (1)


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

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

person Anastasia Black    schedule 12.02.2016