2

所以我正在开发一个 Win2D 游戏,并注意到偶尔会跳过一些帧。我以为是 GC,所以我拍了几张内存快照来看看发生了什么。在解决了我的部分问题并在游戏开始时分配了所有内存后,我注意到在游戏过程中仍在创建大量Task<IReadOnlyList<Windows.Storage.StorageFile>>对象。这也发生在一个空的通用应用程序项目中,环顾四周后,我发现默认情况下启用了 Application Insights 并导致了这一切。

我对 Application Insights 了解不多,但它似乎很不错。所以我的问题是:我是否仍然可以使用 Application Insights 但阻止它创建所有这些任务对象并访问文件系统?

4

1 回答 1

3

ApplicationInsights 使用PersistenceChannel,每当生成遥测项目时,将其存储在磁盘上,然后将其读回并发送(在没有 Internet 连接的情况下,将其存储回来并稍后尝试)。您可以将 inMemoryChannel 替换为仅发送遥测数据的InMemoryChannel(但如果发生故障,遥测项目将丢失)。此实现应该更轻量级,因为它不需要存储访问,但请注意,它也没有重试策略。所以一开始你会这样做:

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

于 2016-02-12T04:15:48.077 回答