У меня есть некоторые опасения по поводу моего проекта, использующего много памяти.Я настроил свой проект MVC 5 с Entity Framework.Я также использую Autofac.
Я нахожу свои классы репозитория и классы сервисов (которые находятся в одном проекте), выполняя:
builder.RegisterAssemblyTypes(typeof(PlanRepository).Assembly)
.Where(t => t.Name.EndsWith("Repository"))
.AsImplementedInterfaces().InstancePerLifetimeScope();
(И один аналог для сервисов в этом проекте.)
Теперь при отладке я вижу, что я инициализирую свой _dbContext, если его еще нет, и в конце вижу, что утилита успешно вызвана.После запуска страницы объем используемой памяти составляет около 460 мегабайт, и если я продолжаю обновлять ее, она немного увеличивается и достигает 500 мегабайт, а когда я останавливаюсь через 10–15 минут, она уменьшается примерно до 460 мегабайт.
Теперь я хотел что-то протестировать, поэтому я создал DBSet, используя следующую модель:
public class Email
{
public int ID { get; set; }
public string Subject { get; set; }
*[StringLength(32, ErrorMessage = "Must be under 32 characters")]*
public string From { get; set; }
public DateTime Sent { get; set; }
public long Size { get; set; }
public Boolean HasAttachment { get; set; }
}
Две вещи, которые следует учитывать:
- Я загрузил DBSet с помощью 200 000 записей указанного выше Email
- В поле Subject каждой записи устанавливается строка длиной 2500 символов
Теперь, когда ядобавьте вызов в мой метод, чтобы просто получить данные:
var emails = _dbEmailService.GetAllEmails().AsQueryable();
Использование памяти увеличивается до 2Gig ... затем каждый раз, когда я обновляю его, добавляет еще1 концерт .
Это действительно плохо, не правда ли?Могу ли я получить помощь, чтобы выяснить, почему?Я потратил 1,5 дня на это и очень расстроился.Спасибо.