EE4를 사용 중이고 _deviceSource.PreviewWindow = new PreviewWindow(new HandleRef(picBox, picBox.Handle));
을 호출 할 때마다 메모리 사용량이 약 60MB 증가합니다. 문제는 양식을 닫고 모든 자원을 _job
및 _devicesource
에 처분하면 시스템이 메모리를 해제하지 않는다는 것입니다 ... CG.collect();
을 호출해도 시스템은 여전히 그 일을 60MB 수행합니다. 양식을 여러 번 호출하려고하면 문제가 더욱 심각해집니다. 메모리 사용률이 지속적으로 증가하기 때문에 어느 시점에서 메모리 부족 오류가 발생합니다. 제안 사항이 있으십니까? SDK 샘플을 확인하고 모든 경우에 문제가 지속됩니다. 그래서 내 질문은 : 이것은 버그입니까?Microsoft ENcoder SDK 메모리 누수
0
A
답변
0
내 실수 ...! 나는 정확하게 모든 자원을 폐기하지 않았다.
_deviceSource.PreviewWindow = null;
_job.RemoveDeviceSource(_deviceSource);
_deviceSource.Dispose();
은 비디오에 사용 된 모든 메모리 자원을 방출한다.
0
오늘 같은 문제가 발생했습니다.
// 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;
누수가 포함 된 타사 라이브러리와 가능성 복용 기본 영역 (관리되지 않는) 자원 장소, 관련 특히 비디오 및 될 가능성이 : 내가 특별히 당신이
job.RemoveDeviceSource(source)
를 호출하기 전에source.PreviewWindow.Dispose()
를 호출 할 필요가 있음을 발견했다. 특정 정보가 없으면 조언을하기는 어렵지만 아마도 MS-1이 아닌 DLL이로드되었는지 확인해야합니다. '2'클린 Windows에서 문제가 발생합니까? –@Roman R. 감사합니다. 타사가 아닌지 확인합니다. 코덱을 사용하지만 다른 컴퓨터에서 동일한 결과를 얻으려고했습니다. PreviewWindow 속성을 실행할 때마다 양식이 완료되고 심지어 가비지 수집기가 호출 된 후에도 릴리스되지 않는 메모리 양을 볼 수 있습니다. 부모 폼을 활성 상태로 유지하면 비디오가로드되는 하위 폼을 호출 할 때마다 메모리 사용이 증가합니다. 필자는 Encoder 4를 사용하는 다른 예제를 동일한 결과로 테스트했습니다. – Timbolo