public class Test{
    private int i = 400;
    public void test(){
        int j = 200;
    }
}在实例化Test类时,为变量i分配资源。
在执行test方法时,为变量j分配资源。

解决方案 »

  1.   

    4楼的在j杯使用的情况下Test实例化的时候j就已经分配内容了
      

  2.   

    不执行的 就会分配控件。
    例如 int i = 5
    完整的写法 应该是  int i = new int(5)看了这个你就回明白。
      

  3.   

    .NET 中类型分两种,一种被称为引用类型(Reference Type),一种是值类型(Value Type)。
    引用类型,比如String,类等,都被分配在所谓的托管堆(Managed heap)中,由线程栈(Thread Stack)的地址来引用
    值类型, 比如int, double, struct等。在线程栈中储存。包括所用到的引用类型的地址。所以楼主的问题主要分为两个,一个就是GC机制,也就是所谓的垃圾回收。另一个就是CLR的优化器。
    GC机制,简单的讲,对于值类型来说,当线程由上而下的执行完毕后就自然回收了。对于被线程栈上的被引用的引用类型来说,如果GC在被调动的时候,发现不再有一个线程栈地址指向托管堆上的引用类型的时候,就会回收这段内存空间。当然GC实际做的比我说的要复杂很多。第二个就是CLR优化器。我们知道.NET的CLR会把我们写的C#代码也好,VB.NET也好都转化为MSIL即中间语言。所以MS在开发CLR的时候,让CLR“足够聪明”,使其忽略和优化了某些没有必要和低效的代码。所以结论是:1,不被使用的代码不会被翻译成MSIL。 2,即使被翻译成MSIL所占用的空间会随着线程的自然终止而被回收,因为本楼是值类型。
      

  4.   

    好像不是吧。。只有new申请时才分配吧。。变量定义了只是相当于给一个存储器起了个名,还没使用应该不会占用内存我觉得应该是这样的。