Tôi có một ứng dụng rất đơn giản bằng EF. Nhưng khi nó chạy một tuần, việc sử dụng bộ nhớ là khủng khiếp (chỉ 80MB lúc đầu, 700MB sau một tuần). Khi tôi sử dụng dotMemory để cấu hình ứng dụng của tôi. Tôi tìm thấy bộ nhớ của Heap thế hệ 2 đang tăng lên tất cả các thời gian.Rò rỉ bộ nhớ khi sử dụng Entity Framework
I Get một bản chụp, cuối cùng tìm thấy các byte giữ lại của dbcontext ef là nhiều nhất.
Tôi rất bối rối. Ứng dụng của tôi rất đơn giản. Mẫu mã:
protected CarbonBrushMonitorEntities _entities = new MYEntities();
public void Add(HistoryData data)
{
_entities.HistoryDatas.Add(data);
_entities.SaveChanges();
}
_entities
chỉ tắt một lần vào thời điểm bắt đầu, sau đó sử dụng tất cả các thời gian.
Chức năng Add
thường được gọi là, khoảng 3 lần/giây
Tôi google một thời gian dài, và thử một số phương pháp như:
_entities.Configuration.ValidateOnSaveEnabled = false;
_entities.Configuration.AutoDetectChangesEnabled = false;
_entities.Configuration.LazyLoadingEnabled = false;
nhưng không có tác dụng.
Bạn quản lý toàn bộ thời gian của ngữ cảnh EF của mình như thế nào? Bạn có bao giờ vứt bỏ/tái tạo nó không? – ken2k
@ ken2k tạo tại thời điểm bắt đầu, sau đó được sử dụng mọi lúc. không bao giờ vứt bỏ/tái tạo. Bởi vì Kiến trúc ứng dụng của tôi sử dụng Ioc và Dependency Injection。 – yubaolee
Lớp nào là phương thức bổ sung? – lloyd