我正在使用 EE4,每次调用_deviceSource.PreviewWindow = new PreviewWindow(new HandleRef(picBox, picBox.Handle));
内存使用量都会增加大约 60 MB。问题是当我关闭表单并处理所有资源_job
并且_devicesource
系统不释放内存时......即使我调用CG.collect();
系统仍然使用那些 60MB 做某事。如果我尝试多次调用表单,问题会更糟。在某些时候,我得到内存不足错误,因为内存利用率不断增加。有什么建议吗?我检查了 SDK 示例,在所有情况下问题仍然存在。所以我的问题是:这是一个错误吗?
问问题
218 次
2 回答
0
我今天遇到了同样的问题。我发现你必须在打电话source.PreviewWindow.Dispose()
之前打电话job.RemoveDeviceSource(source)
:
// The order in which we remove, dispose, and set null is very important.
// Anything less creates a huge memory leak.
// 1st Stop Encoding
job.StopEncoding();
// 2nd, Must Dispose the Preview Window
// Before Calling Job.RemoveDeviceSource << Absolutely
source.PreviewWindow.Dispose();
source.PreviewWindow = null;
// 3rd, Remove the Source
job.RemoveDeviceSource(source);
// 4th, Dispose the Source
source.Dispose();
source = null;
// 5th, Dispose the Job
job.Dispose();
job = null;
于 2013-12-22T12:41:51.857 回答
0
我的错...!我没有正确处理所有资源:
_deviceSource.PreviewWindow = null;
_job.RemoveDeviceSource(_deviceSource);
_deviceSource.Dispose();
释放视频上使用的所有内存资源。
于 2013-07-08T19:08:48.820 回答