我有一个做一些业务工作的 Windows 服务。我用 dotTrace 对其进行分析以发现性能问题并有这样的图片: GC Wait 88%
GC Wait 需要 88% 的时间似乎很奇怪,所以我关闭了一些小间隔并得到: Thread stats
我发现在非阻塞期间,线程通过 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;
}
}
}
有没有人有类似的问题?还是我错过了什么?