我有一个vb.net应用程序分发给我的分析师-我们一次分配100张200MB图像。该应用程序使用GDI +顺序打开大jpg图像,并将图像放置在LOH中。我扫描每个像素以寻找数据。 -完成后,我处理图像并使用GC.collect。但这并不能清除LOH,因此LOH会不断增加,直到应用程序崩溃为止。解决方法是将任务分成25个实例块,但这是有风险的,因为我们的分析师经常在深夜进行此操作-也许是在喝啤酒或2点之后。
C#构造为
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce
但vb.net中没有可用的GCSettings
我的vb.net代码是
loadedImage.Dispose()
MasterImage.Dispose()
GC.Collect()
Finalize()
但是我找不到vb.net方法来强制LOH压缩
完成后
你能帮忙吗?
答案 0 :(得分:0)
GCSettings.LargeObjectHeapCompactionMode
已在.NET 4.5.1中添加。它存在于VB.NET和C#中。您可能正在针对较低版本的.NET运行时。如果要访问此功能,则需要针对4.5.1或更高版本的框架版本进行编译。
但是,这可能无法解决潜在的问题。您的泄漏甚至可能不在您认为的位置。使用分配探查器对应用程序进行性能分析是跟踪资源泄漏的最佳方法。如果没有Minimal, Complete, and Verifiable example,很难猜测您的应用程序可能出了问题。