51

In the below program:

class Main
{   
    static string staticVariable = "Static Variable";
    string instanceVariable = "Instance Variable";

    public Main(){}   
}

The instanceVariable will be stored inside the memory allocated for object instance. Where will the staticVariable be stored, is it stored in the object instance itself or somewhere else? If its stored somewhere else, how are the memory locations connected?

johnnyRose
  • 7,310
  • 17
  • 40
  • 61
gk.
  • 1,252
  • 3
  • 14
  • 23

2 Answers2

13

Memory for static variables are normally held in some rooted (and hidden) object[]. This can be seen doing a !gcroot on the object in WinDbg (with SOS).

Just to add, these references can never be GC'ed (unless you null the field), as I discovered recently.

leppie
  • 115,091
  • 17
  • 196
  • 297
-1

For instance in C++ staic variables are allocated in global memory space with global variables. Compiler uses special naming convention to know that this variable belongs to the class.

Nick Borodulin
  • 3,065
  • 4
  • 21
  • 21