哪些存储?

时间:2011-02-23 07:45:49

标签: c# garbage-collection

我在.net上学习GC。我想知道,我的整数,浮点数或值类型,存储的静态变量,函数的成员,函数中的值类型都存储在哪里。

您对此主题的任何文件或任何网络链接,请在此处发布。

谢谢你, 戒日

4 个答案:

答案 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)

enter image description here

<小时/> 注意: 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)

你可以看一下这篇文章:

C# Heap(ing) Vs Stack(ing) in .NET