在我的应用程序中,我需要将大文件(约250 MB左右)加载到内存中,我采用懒加载的方式-当用户要查看文件时,我才会加载它。此后,每次用户尝试访问该文件时,我都能立即显示它,因为它已经位于内存中。
因此,问题出在垃圾回收上...
我通过WeakReference加载每个文件,
但是:
我测试了几次,我能够将大约3GB的数据加载到内存中(然后应用程序变得无法使用),但是GC没有发生。我不能调用GC.Collect(2),因为我无法确定何时调用它,那么如何告诉GC在好的时机(该死,3GB太多了...似乎GC只是没有做好工作)收集内存(弱引用)?
如何解决这个问题?我真的需要懒加载,但是当进程使用超过1GB的内存时,或者类似于此的情况下,我需要收集内存。