DevForce中数千个重复的字符串占用内存

本文关键字:字符串 内存 千个 DevForce | 更新日期: 2023-09-27 18:12:05

最近使用dotMemory进行内存分析后,我们发现内存中有超过10万个重复字符串,总计超过40 MB。作为一个数据密集型应用程序,我们希望尽可能减少任何地方的重复字符串。

查看配置文件,几乎所有这些都来自EntityRelationLink.UniqueName上的getter。它必须连接字符串,因此默认情况下字符串不会被internned,尽管作为唯一名称,我认为它不会改变太多。有没有办法强制实习在这个字符串上?

DevForce中数千个重复的字符串占用内存

您可能无法从应用程序端修改此行为。

这个问题在大型模型中可能会更加明显,当做很多1)实体图导入,2)使用EntityCacheState,或3)实体图查询时。虽然您看到了大量的重复字符串,但好消息是它们应该可以用于垃圾收集。

我们可以考虑解决这种行为,尽管我不知道实习是在这种情况下的答案。当EntityServer由IIS托管时,我们希望避免内部字符串比EntityServer存活时间长。模型元数据,如EntityRelationLink,在加载后通常是不可变的,所以我们应该在UniqueName getter中进行一些优化,以避免它所做的重复字符串连接。

您使用的是哪个版本的DevForce ?