From a different angle, maybe the way to help would be to explain just what 'static' is in .net.
Here's a simple class:
public class MyClass
{
public string Zeus;
public static string Hades;
}
Okay, so what does that 'static' mean for our Hades string? Static basically means: it only exists in one place - it doesn't matter how many instances of the class you make, there's only going to be one Hades string.
MyClass first = new MyClass();
MyClass second = new MyClass();
MyClass third = new MyClass();
... there are now three Zeus strings. One for each of those MyClasses:
first.Zeus = "first";
second.Zeus = "second";
third.Zeus = "third";
... but there's only one Hades:
MyClass.Hades = "only version";
Notice how I didn't put 'first.Hades', or 'second.Hades'? That's because, since there's only one version, I don't have to put an instance to get to it. In fact, VisualStudio will flat out tell you, "I can't do this - you're trying to get to a static variable, but you're trying to get to it through an actual instance of your class."
Instead, you just use: MyClass.Hades.
So, getting back to your memory question?
public class MyClass
{
public List<string> Zeus;
public static List<string> Hades;
}
The way that those List are stored really isn't any different. The only difference is, you'll always have one List for your static Hades variable... and you'll have as a Zeus List for every MyClass you create (that hasn't been GarbageCollected)
Make sense? It's kinda important to get this concept down, because it'll come into play a lot for stuff like caching or having a Singleton global object.