当我的应用加载时,我应该加载到内存中?

时间:2009-11-09 20:26:05

标签: c# .net memory ram

我有使用序列化保存到文件系统的对象。当我加载应用程序时,我应该将所有对象加载到内存中还是仅存根(用于搜索功能)?

如果我只加载存根,那么我会在需要时从文件系统加载它们,然后将它们保存在内存中以便快速访问。

数量级是数百条记录而不是数千条。

你会推荐哪种方式?

5 个答案:

答案 0 :(得分:4)

根据需要加载,并保留在内存中,不要浪费星空加载不会使用的东西。

您甚至可能会尝试保留大多数请求的项目的记录,然后在启动时加载它们。

答案 1 :(得分:0)

如果对象的大小和数量总是相当小,请在启动时加载它们。否则使用存根/代理。

答案 2 :(得分:0)

取决于。

如果您知道它永远不会超过数百个,那么将它们全部存入内存。

如果你低估了总数的可能性很小,请使用存根。

它还取决于记录的大小以及它们改变的频率。

答案 3 :(得分:0)

这实际上取决于这些对象的使用场景。它们在运行时是否经常被应用程序使用?它们很少使用吗?有些是经常使用而其他人很少使用吗?

此外,您的应用程序将运行的系统的预期资源基线是多少?您要加载的对象是大还是小?即使它们只有几百个,如果它们都是非常大的物体,那将是一个重要因素。如果您需要低调的应用程序,那么按需加载似乎更合乎逻辑。

如果不了解有关预期用法和基线执行环境的更多信息,很难回答这类问题。它非常主观。

答案 4 :(得分:0)

内存与性能。选择哪一个更重要(或者更确切地说,每个重要程度)并相应地调整对象的缓存。

您甚至可以使用Enterprise Library Caching Block,这可以加快您的实施速度。

相关问题