Im only familiar with C#, and this is my understanding of it:
Then your program starts, it loads all the related assemblies into an AppDomain.
When the assambly is loaded, all static constructors are called, including static fields. They will live in the there, and the only way to unload them, is to unload the AppDomain.