C#方法会占用内存吗?

时间:2018-02-19 06:49:49

标签: c# performance memory memory-management heap-memory

当有一个包含50个方法的类并且我们创建该类的50个对象实例时,内存会发生什么?使object具有大量功能和更少内存使用的最佳解决方案是什么?

2 个答案:

答案 0 :(得分:3)

是的,C#/ .Net方法需要基于每个AppDomain的内存,方法/属性没有每个实例的成本。

费用来自:

  • 方法元数据(类型的一部分)和IL。我不确定IL保持加载多长时间,因为它实际上只需要JIT所以我猜它是根据需要加载并丢弃。
  • 方法之后JITed机器代码保持到AppDomain被卸载(或者如果编译为中性,直到进程终止)

因此,使用50种方法实例化1或50个对象不需要不同的内存量。

答案 1 :(得分:1)

首先,内存使用和功能不是基于对象,它基于我们创建对象的类...因此,如果您正在创建类的对象,您可以访问所有的功能那个类...并且根据我的说法,它是使用对象访问类功能的更好选择