【问题标题】:C#. Where struct methods code kept in memory?C#。结构方法代码保存在内存中的位置?
【发布时间】:2010-03-09 08:10:34
【问题描述】:

大家都知道 .NET 将值类型保存在内存中的位置(主要在堆栈中,但在某些情况下可能在堆中等)...

我的问题是 - 结构的代码在哪里?

如果我在结构中说 16 字节的数据字段和其中的大量计算方法 - 我假设 16 字节将被复制到堆栈中,并且方法代码存储在其他地方并为所有实例共享结构。

这些假设正确吗?

【问题讨论】:

    标签: c# struct class-design


    【解决方案1】:

    MSIL 存储在程序集的代码部分中 - Windows 在首次加载程序集时将其映射到内存中。首次执行该方法时,JIT 会将 MSIL 编译为 x86/x64 代码。一旦方法被编译到内存中,它通常会留在内存中,并被所有线程共享。在某些情况下,多个 AppDomain 会导致 MSIL 被第二次编译,但这种情况很少见。

    【讨论】:

      【解决方案2】:

      是的。基本上方法是在某种结构中单独管理的 - 基本上 - 不是那么众所周知和记录在案(因为没有人需要它)。

      它也被保存为字节码,经过编译,也可以内联在其他方法中。

      结构是按类型已知的,因此可以正确路由对方法的调用。

      【讨论】:

        【解决方案3】:

        这是一个great article,用于弄清楚什么去哪里。

        【讨论】:

          猜你喜欢
          • 2015-02-17
          • 2018-12-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-20
          • 2015-05-10
          • 1970-01-01
          相关资源
          最近更新 更多