Может ли следующая статическая задача C# привести к утечке памяти? Пожалуйста, обратите внимание, что соответствующие JSON методы используют Newtonsoft.JSON.NetМогут ли использовать статические задачи, подобные этому, привести к утечке памяти?
public static async Task<List<Result>> TMDBDiscover(string url)
{
using (HttpClient client = new HttpClient())
{
using (HttpResponseMessage response = await client.GetAsync(url))
{
using (Stream stream = response.Content.ReadAsStreamAsync().Result)
{
using (StreamReader reader = new StreamReader(stream))
{
List<Result> ResultList = new List<Result>();
string json = reader.ReadToEnd();
var root = JsonConvert.DeserializeObject<RootObject>(json);
foreach (Result r in root.results)
{
ResultList.Add(r);
}
root = null;
json = "";
return ResultList;
}
}
}
}
}
бы вызывать этот метод со страницы, как это:
foreach (Result r in await TMDBDiscover("url"))
listview.Items.Add(r)
создать ссылку на ResultList, что не получает собранные GC? Я говорю это, потому что я проверил память приложения с помощью инструмента dotMemory от Resharper, и некоторые из данных, содержащихся в ResultList, остаются налево, когда я перехожу на другую страницу.
О да, о настройке root или json на null это был просто глупый тест, чтобы выяснить, могло ли это что-то изменить (это не так). Кроме того, извините за мое невежество, но я довольно новичок на C#: В чем разница между статическим классом и задачей, возвращаемой статическим методом? – user2950509
С точки зрения утечек памяти статическое поле * останется в памяти. Статический метод - это просто метод, который вы можете вызывать без наличия экземпляра его содержащего класса, например функции. Статический класс - это класс, который может содержать только статические члены. –