关于.net分配内存和GC机制
最近看了很多.net托管堆的文章,但是有一些不太理解,问题如下。
1.托管堆默认会保存一段连续的内存空间(我理解这个连续是指物理内存上的连续)。如果我有4G总内存。这大小初始是多少?如果保留一段很小内存,有其它程序占用了中间某一块内存了。当.net程序需要分配内存的时候,如何保证还是连续的,我这里指的不是保留内存段的联系,那个我知道是可以GC回收、压缩。
2.net程序中的堆是一个什么概念,我知道C/C++里有栈和堆,用new关键字申请堆中的内存,使用完需要手动释放。.net程序使用new是申请托管堆中的内存,那是不是用不上所谓的堆了。只有栈和托管堆。
3.很多.net面试题目都是 堆和栈有什么区别?网上一收一大堆,全部是c/c++的栈和堆解释。