背景:在我的公司我们正在开发一堆应用程序正在使用的相同的核心dll。这些dll的使用Spring.net's IoC-容器的电线的东西(auto-布线)。所有应用程序均采用相同的弹的配置文件,与此配置的文件分为许多类在许多不同的dll。但并不是所有的应用程序需求的功能,从每dll。但是,由于IoC-容器的工作,所有dll的是加载Spring.net 审查的类型以及检查他们的接口实施等等。

核心问题:我的理解是,它是更好只是载dll是你真的使用。但是这真的很糟糕的记忆使用只装载一个管理dll?或是它的第一个然后你正在使用的类dll和他们所得到的JIT,最存储器的使用?

有帮助吗?

解决方案

如果没有代码从大会曾经使用过,那么最终的页面,大会可以从存储器进入网页的文件赞成积极使用的网页。在这种情况下,总体的长期效果可能是次要的。虽然,会有负面影响的启动时间。

其他提示

我不认为它是如此坏。唯一的问题是,因为大的元数据和数量的记忆你的应用程序需要更有可能是一些部分应用程序,它正在使用中将位于在不同的记忆页可以因为一些性能的泄漏,但是这是非常低段的应用程序,这种类型的事情都是至关重要的。

真糟糕的是一个困难期的量化的,我猜取决于规模的东西,一般来说我会这么说如果你可以避免装载的东西,你不需要那么你应该。但是当然如果您使用的是反思,以确定如果你 可以 使用它,你必须先加载...鸡和蛋的问题。

东西要知道,虽然,一旦你载一个组成应用程序领域可以不再卸载它从这一应用领域,它是可能的,但是动态创建的应用程序域负荷的组件和卸载将整个应用程序域,当你完成。

当然载dll's w/o使用它们导致较慢启动时由于阅读的会从磁盘和证据的安全检查。但是,如果记忆是你的关心你至少可以肯定,你不会浪费更多的存储器比大小的组件如果你真的不要使用任何类型内。当然,如果这些类型的规定在春天结构中,至少那些种类获得载入存储器和其静态的初始化(如果有)将被执行。在罕见的情况下,这可能是一个问题。JITing是由CLR于每种方法的基础,这样的方法不使用不会浪费cpu+存储器。

在任何情况下可以分配文件为例如分区通过把所有对象定义的模块进入的文件moduleA.配置的所有定义模块B入文件moduleB.config和指定只有那些模块为你的特别的应用程序,这是真正需要的。

禾田, 埃里希*

P.S.:我还想建议你后春天。净相关的问题,我们的 社会论坛 -这是更可能得到回答您的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top