if (该对象的方法等相关信息是保存在内在中)
{
    if (每个对象都保存一份)
    {
        Console.Writeline(实例化一个 byte 占多少内存?);
    }
    else
    {
        Console.Writeline(那是如何保存?);
    }
}
else
{
    Console.Writeline(那保存在哪里?当调用一个对象的方法的时候 .NET FX 是如何执行的?);
}==========================================请举例证明!!!

解决方案 »

  1.   

    调用方法跟.net fx没关系啦,是clr
    方法只有一份的,不会每个实例一份
      

  2.   

    to lovingkiss:
    那如果保存在内在中的话,Byte 岂不是远远不止一个字节?因为 Byte 类任意一个方法中的任意一个字符至少占一个字节。为什么我如下代码只占 107M 内存?int size = 1024 * 1024 * 100;byte[] buffer = new byte[size];for (int i = 0; i < size; i++)
    {
        buffer[i] = 0;
    }
      

  3.   

    to BearRui:
    请别灌水。我发的两个贴子,你都做了毫无意义的回答。
      

  4.   

    to shalen520:
    那 CLR 是如何处理的呢?
      

  5.   

    方法是放在一个特殊的地方,叫method table
    你还是看看这篇文章吧,讲的很详细了http://www.microsoft.com/china/MSDN/library/netFramework/netframework/JITCompiler.mspx?mfr=true
      

  6.   

    to shalen520:
    好的,真是非常感谢!这就是我想要的答案:)。贴子我晚点时间再结,再看看还有没有别的意见。
      

  7.   

    方法是只有一个.
    .net运行时会在内存中建立一个类型对象,此对象不是具体实例,是一个特殊的对象,它会保存方法表.但是字段是保存在类实例里面,因为每个实例的字段很可能是不一样的. 比如假设有一个类叫Class1,那么如果你new了2个Class1.
    方法表是保存在一个Class1类型对象的特殊对象里面,这个对象只有几个,不论你new了多少个Class1, 而字段却是保存在具体实例里面,你new了两个Class1,那么字段信息会保存两次.
      

  8.   

    BearRui也是不错的兄弟,不会是故意做毫无意义的回答,也许是因为你的问题太笼统
    在这里混久了——就都了解了。我有时候也爱骂人打架的。