Microsoft ENcoder SDK内存泄漏

时间:2013-07-01 18:15:01

标签: sdk expression-encoder-sdk expression-encoder-4

我正在使用EE4,每次拨打_deviceSource.PreviewWindow = new PreviewWindow(new HandleRef(picBox, picBox.Handle));时内存使用量增加约60 MB。问题是当我关闭表单并处理_job_devicesource上的所有资源时,系统不释放内存......即使我调用CG.collect();,系统仍然使用这些60MB做某事。如果我尝试多次调用表单,问题就更糟了。在某些时候,我得到内存不足错误,因为内存利用率不断增加。 有什么建议吗?我查看SDK示例,并且在所有情况下问题仍然存在。所以我的问题是:这是一个错误吗?

2 个答案:

答案 0 :(得分:0)

我的错误......!我没有正确处理所有资源:

_deviceSource.PreviewWindow = null;
_job.RemoveDeviceSource(_deviceSource);
_deviceSource.Dispose();

释放视频中使用的所有内存资源。

答案 1 :(得分: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;