我在.net上学习GC。我想知道,我的整数,浮点数或值类型,存储的静态变量,函数的成员,函数中的值类型都存储在哪里。
您对此主题的任何文件或任何网络链接,请在此处发布。
谢谢你, 戒日
答案 0 :(得分:6)
我有an article会谈到这一点,但你应该阅读Eric Lippert的各种博客文章。 "The truth about value types"可能是最重要的一个,“堆栈是一个实现细节”(part one; part two)。
从根本上讲,在可达性等方面理解垃圾收集更为重要,而不是内存中的内容实现细节。 可以在性能方面有所帮助,但您需要不断提醒自己这是一个实现细节。
答案 1 :(得分:2)
此链接http://msdn.microsoft.com/en-us/magazine/bb985010.aspx解释了垃圾收集和一些内存管理。
答案 2 :(得分:1)
<小时/> 注意: Jon Skeet的Answer更正确
堆栈是为功能中的自动变量分配的内存部分。
使用后进先出(LIFO)方法将数据存储在堆栈中。这意味着内存中的存储仅在内存的一端分配和释放,称为堆栈顶部。堆栈是内存的一部分及其相关的寄存器,用于临时存储最先存储的项目是最先检索的信息。
堆 内存
另一方面,堆是用于动态内存分配的内存区域。在这种情况下,以任意顺序分配和释放存储器块。直到运行时才知道块的分配模式和块大小。堆通常被程序用于许多不同的目的。
堆栈比堆快得多,但也更小,更昂贵。
示例:(它的C虽然不是C#)
int x; /* static stack storage / main() { int y; / dynamic stack storage / char str; / dynamic stack storage / str = malloc(50); / allocates 50 bytes of dynamic heap storage / size = calcSize(10); / dynamic heap storage */
以上内容Taken from Here
答案 3 :(得分:0)
你可以看一下这篇文章: