2

私はいくつかのビジネス作業を行う Windows サービスを持っています。パフォーマンスの問題を見つけるために dotTrace でプロファイリングし、次のような図を作成しました: GC 待機 88%

GC 待機に 88% の時間がかかるのは奇妙に思えるので、いくつかの小さな間隔を閉じて、以下を取得します。

非ブロック期間中、スレッドは JSON.Net デシリアライゼーションを通じてオブジェクトを割り当て、GC によってブロックされたこのコードも発見しました。

    using (var response = await _httpClient.SendAsync(request, combinedTokenSource.Token))
    {
        response.EnsureSuccessStatusCode();
        if (response.Content == null)
            throw new InvalidOperationException("No HTTP response received.");

        using (var responseStream = await response.Content.ReadAsStreamAsync())
        {
            using (var textReader = new JsonTextReader(new StreamReader(responseStream)))
            {
                var results = new JsonSerializer().Deserialize<ElasticResponse>(textReader);
                return results;
            }
        }
    }

誰かが同様の問題を抱えていましたか?または、何か不足していますか?

4

2 に答える 2