请解释一下在c#中堆和栈,它们分别有哪些作用?

解决方案 »

  1.   

    CLR会给进程分配一个1M的栈,主要是用来存放局部变量,函数的参数和变量,函数返回地址.堆的话主要是GC和LOH,GC堆是分配对象的地方,引用类型的对象,以及他们内嵌的数据变量都存放在这里.GC堆有垃圾回收器负责回收内存
    LOH堆是存放大于65000B的对象的.然后还有堆加载器,GC中对象的方法表就存在这个地方,然后还有JIT堆,就是JIT编译的代码就存在这. 整个就构成了一个应用程序遇.
    栈是先进后出的,变量生命周期是同程序遇的.而GC堆是会被垃圾回收器监视的,垃圾回收时会对内存进行压缩,所以垃圾回收会有性能影响.
    这是.NET里的堆栈.其他地方的有点差别