Я контролирую потребление памяти моего программного обеспечения через dotMemory JetBrains.Entity Framework Memory Leak
Я заметил, что когда я делаю запрос через свой репозиторий, то, если я закрою окно, я оставил объект, с которого я сделал вызов; мой репозиторий в память, я использовал и даже распоряжаюсь своим контекстом, но ничего не остается ... в памяти. Что я могу проверить?
Вот код обижая:
LoginViewModel.cs
using (DbContext = new Context())
{
var creazioneDocumentoRepository = new RepositoryBase<CreazioneDocumento>(ctx);
var creazioneDocumento = creazioneDocumentoRepository.Lista();
if (creazioneDocumento == null || creazioneDocumento.Count == 0)
return;
var decimaliQuantita = creazioneDocumento.Max(x => x.NumeroDecimaliQuantita);
_NumeroDecimaliQuantita = decimaliQuantita != 0 && decimaliQuantita > 0 ? decimaliQuantita : 0;
var decimaliPrezzo = creazioneDocumento.Max(x => x.NumeroDecimaliPrezzo);
_NumeroDecimaliPrezzo = decimaliPrezzo != 0 && decimaliPrezzo > 0 ? decimaliPrezzo : 3;
_NumeroDecimaliImponibile = 2;
// ctx.Dispose();
}
Doing отладки, я заметил, что до:
if (creazioneDocumento == null || creazioneDocumento.Count == 0) return;
объект не вспомнил, но как только Я запускаю «max», объект остается в памяти.
Вот снимок экрана с dotmemory:
Вместо этого скриншот говорит мне, что методы, которые ссылаются и сохранить в памяти моей loginviewmodel, и я считаю, что они являются два макс:
Вы знаете, что вы не доказали утечку памяти в среде GC? Все, что вы доказали, состоит в том, что объекты, которые не являются мусором, собранным YET, не из памяти YET. Перед выполнением второго измерения вы пропустите доказательство работы GC. Голосование закрыто - невозможно воспроизвести. – TomTom
@TomTom Когда dotMemory получает моментальные снимки, он выполняет полную сборку мусора, поэтому, если есть объекты в памяти, это означает, что они удерживаются некоторыми корнями. Brux88: Я вижу, что это не экземпляр LoginViewModel, но экземпляр некоторой лямбды с закрытием хранится в памяти некоторыми другими делегатами. Невозможно сказать что-то еще без исходного кода LoginViewModel. –
На самом деле, как я и думал. но я не понимаю, как освободить память. проблема заключается в том, когда я выполняю эту строку: var decimaliQuantita = creazioneDocumento.Max (x => x.NumeroDecimaliQuantita); ..... как я могу исправить? – Brux88