2011-08-03 1 views
0

원래 메모리 누수가 발생한 pre .Net 일 동안 만 작성된 ActiveX 구성 요소를 사용하고 있습니다. 모든 .Net 관련 인텐시티 (AxHost 등.)는 적절하게 해제되지만 관리되지 않는 메모리는 계속 증가합니다. (.Net mem 프로파일 러에 따라).net에서 액티브 X 구성 요소를 통해 관리되지 않는 메모리 누수가 발생했습니다.

.Net에서 강제로 관리되지 않는 메모리를 해제 할 수있는 방법이 있습니까? 어쩌면 이것은 어려운 ActiveX 구성 요소를 처리하는 방법으로 해결할 수 있습니까?

구성 요소는 Dynavix 2 (dyDisplay, PictureDocument, AxDYNAview)입니다.

답변

1

아니요 .Net 런타임은 관리되지 않는 메모리에 대한 책임이 없습니다.

당신이 할 수있는 일은 프로그램을 만들고 IPC Remoting을 사용하여이 둘 사이에서 통신하는 것입니다. 컨트롤이 더 이상 필요하지 않으면 두 번째 프로그램을 죽일 수 있습니다 (또는 메모리 사용량이 너무 많이 늘어날 때 죽일 수 있습니다).

컨트롤에서 보조 응용 프로그램의 창을 호스팅 할 수도 있습니다. Windows 화면 보호기는 preview mode에서와 동일한 트릭을 사용합니다.

+0

힌트를 보내 주셔서 감사합니다. IPC Remoting이 어떻게 도움이 될지 나는 undestand를하지 않습니까? IPC Remoting을 통해 ActiveX에서 원격 기능을 호출 할 수 있지만 어떻게 도움이됩니까? 이미 AxHost를 통해 함수를 호출 할 수 있습니까? – Johannes

+0

다른 프로세스에서 컨트롤을 호스팅 할 필요가 없습니다 (읽기 : 메인 프로그램과 동시에 실행되는 다른 프로그램) -이 프로세스와 통신하려면 IPC 원격 채널을 사용해야합니다. 그렇게하면 메모리 사용량이 일정한 제한을 초과하면 프로세스를 종료 할 수 있습니다. –

관련 문제