2

TLDR 摘要:(a)我是否应该在可能在运行时产生多个对象的类中包含(冗长的)方法代码,(b)这样做会导致内存使用膨胀,(c)如果是这样,我应该将代码“外包”给一个类只加载一次并让类方法调用它,或者(d)代码是否只加载一次对象定义而我什么都不担心?

...........

我不知道是否有一个好的答案,但如果有的话,我还没有通过在通常的地方搜索找到它。

在我的 VB.Net(2010 如果重要的话)WinForms 项目中,我在对象模型中有大约十几个类对象。其中一些非常简单,只是充当数据存储库。然而,在对象模型之上的那些方法的数量越来越多。尽管确切的数量将取决于运行时,但可能有大量更高级别的对象在使用中,所以我不能比这更精确。

当我为顶级方法之一编写方法代码时,我注意到它开始变得相当冗长。

考虑到现在普通 PC 有多少内存,内存优化是一种失传的艺术,但我不想让我的应用程序占用资源。因此,对于比我更了解 .Net 的任何人(其中会有很多),我的问题是:

  • 代码是否与所创建的类的每个实例一起加载到内存中?

  • 或者,它是否只与类的定义一起加载一次,并且所有派生对象都只引用该定义?(我不太确定这是怎么可能的,例如,事件处理程序可以动态分配,但没有害处。)

  • 如果对第一个问题的回答是肯定的,那么将代码编写在只加载一次并从真实类的方法调用的“实用程序”对象中会更有效吗?

任何想法表示赞赏。

4

2 回答 2

3

选择更容易维护代码库的方法(更短的方法等)。对于任何具有越来越复杂性的东西来说,这是更重要的成本。

内存优化只是一个问题,如果它是一个问题。12个类真的没什么,当你有数百个类的数百个实例时,它可能会成为一个问题。

于 2013-10-22T21:51:09.367 回答
2

简短的回答,没关系。您的数据存储在内存中,但您的代码仅加载一次。

编辑:我想我需要更长的答案。

如果您有 10 个类的实例,则属于该实例的变量都占用自己的内存空间。因此,如果您有 10 个属性、变量等,这意味着您的记忆中有 100 个(ish)项目。至于您的代码,它仅与您的程序集一起加载一次。如果您创建 10 个类的实例,则您的代码不在内存中 10 次。

于 2013-10-22T21:45:21.753 回答