There is no "leak" here; this is simply the expected behavior. Yes, anything that is reachable via a static field will will not be collected by GC, but this is usually correct in terms of some kind of global state. By "leak", we're usually referring to unexpected or inexplicable memory retention. The most common scenario there is with static events which sound like a great idea, but make it very easy to keep entire segments of long-redundant objects alive. For example:
SomeType.SomeStaticEvent += obj.HandleTheThing;
which now means that the object from obj
is now retained forever (or at least until the delegate is explicitly removed from the event), and anything that obj
can see: is now retained forever, etc.
In the case shown in the question, there aren't even any objects - just an integer. I don't think you need to worry about the cost of retaining an integer over the duration of an app-domain, especially if your app-domain requires that integer to be known for the duration.
I'd be more concerned about things like concurrency - whether that means "multiple current user stations", or low level details like volatility and register usage of fields.