我使用 Breeze、ASP.NET Web API 和 MySQL 数据库开发 SPA。数据库的主要实体(Code First EF)有4个一对多关系和20个简单属性。当我下载了 ~ 500 个此实体(具有相关实体的对象的总数 ~ 2000)时,Chrome 选项卡进程使用 250+ Mb 的 RAM(不加载 UI)。如果我保存一些实体,这个价值就会增加。正常吗?我怎样才能减少这个值?
问问题
418 次
2 回答
2
从breeze v 1.1 开始,我们确实修复了微风中的一些内存泄漏,并在处理大型查询时减少了一些内存压力。此外,微风使用的最新版 Q 库也修复了一些漏洞。希望您现在应该看到更小的足迹。请发布任何进一步的发现......并感谢您对此发表评论。
于 2013-02-07T03:28:42.233 回答
1
到目前为止,我无法重现这个结果,所以我可以获得更多信息吗?只是为了确保我清楚,您的查询是针对 500 个根实体,每个有 20 个简单属性和 4 个导航属性,查询的实体总数只有 2000(所以每个导航属性平均有 1 个相关实体? (2000/(500*4))。
相关实体的大小是多少?
您是使用“EntityQuery.expand”来检索关系属性还是使用“entityAspect.loadNavigationProperty”?
每个轻量级 entityManager 都按键存储每个实体的单个副本,因此内存使用不应扩大,除非您检索更多实体(或使用多个实体管理器。)。
于 2013-01-17T18:34:35.143 回答