C#方法占用内存吗?

A.H*_*avi 4 c# memory performance memory-management heap-memory

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

Ale*_*kov 6

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

成本来自:

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

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