static procedure 是不需要类实例化就可以访问的函数,所以调用static procedure时没有产成新的类实例,只是简单的调用函数,在函数返回时,释放所占用的内存,例如static void Main()函数,它不需要一个实例就可以运行,在Main()函数执行完时,程序就终止了,内存释放。
.NET的编译过程需要执行2步,第一步是将语言编译成IL(中间语言),第二步是CLR(通用语言运行时)将IL编译成机器码,他可以根据机器的CPU类型对代码进行优化。
ASP.NET在第一次调用时进行CLR编译,并存放在高速缓存当中,以后调用就不需要在进行编译了。
.NET的编译过程需要执行2步,第一步是将语言编译成IL(中间语言),第二步是CLR(通用语言运行时)将IL编译成机器码,他可以根据机器的CPU类型对代码进行优化。
ASP.NET在第一次调用时进行CLR编译,并存放在高速缓存当中,以后调用就不需要在进行编译了。
对如果是,那么驻留的是编译为机器码的代码吗?
对如果是这样,是不是就是说,静态方法工作效率会高很多?编译一次后在Application执行期内能够不用再即时编译?
会高,但不会高很多,静态方法只是不需要类的实例化,可以把静态方法本身就看成一个实例
Application对象在每次用户页面请求时自动创建一个实例,这是由IIS管理的。
PAGE是Application对象中的一个类,他当然不会释放Application占用的内存。
垃圾收集只是处理托管堆上的引用类型数据,而函数的调用过程不是数据,函数体内的局部变量是在函数执行完后自动释放内存的。NET的两次编译是指用编译器编译完成是第一次编译,执行时才进行第二次编译,及JIT。