This is the situation in which the WeakReference (System.WeakReference) object in .Net helps us a lot. Also it helps in performance optimization of the application with good memory management.
When the user switches away from the first part of the application, you can create a weak reference to this massive object and destroy all strong references. So that, if memory pressure is high GC will reclaim the memory or else it won’t. You can create a week reference to an object by passing that object as a parameter to the WeakReference’s constructor
WeakReference eg = New WeakReference (obj)
Where obj is your massive object
When the user switches back to the first part of the application, the application can attempt to obtain a strong reference for the massive object (Obj) by accessing the eg’s Target property (WeakReference.Target). If successful, the application doesn't have to do the heavy job of recreating that heavy object again. Target is not a static property so you need to call that object Target property
Obj = eg.Target;
The WeakReference type offers two constructors, this first one receives an object and the second done receives an extra parameter called TrackResurrection which is Boolean value. When this is true, reference is retained after the object's Finalize method has been called. This allows the object to be recreated, but the state of the object remains unpredictable. Use this with heavy objects only and remember that the object WeakReference is also a manage object and will having its own overheads