2011-08-03 63 views
0

我使用原本只用於預淨天,導致內存泄漏編寫ActiveX組件。所有.Net相關的實例(AxHost等)都已正確釋放,但非託管內存不斷增長。 (按淨MEM分析器)非託管內存泄漏dynavis

有沒有辦法從內部淨力釋放非託管內存?也許這可以通過處理不規則的ActiveX組件來解決?

中的部件Dynavix 2(dyDisplay,PictureDocument,AxDYNAview)。

回答

1

可惜沒有,.NET運行庫不負責非託管內存。

你可以做的是創建一個程序,並使用IPC Remoting兩者之間進行通信。當你不再需要這些控件時,你可以殺死第二個程序(或者當它的內存使用量增長太多時就殺了它)。

你甚至可以承載您的輔助應用程序的窗口在你的控制 - 使用同樣的伎倆的Windows屏幕保護程序中preview mode做。

+0

感謝提示。我不知道IPC Remoting如何幫助我?我可以通過IPC Remoting調用ActiveX的遠程功能,但這有什麼幫助?我已經可以通過AxHost調用函數了? – Johannes

+0

不,您會將控件託管在單獨的進程中(請參閱:與您的主進程同時運行的另一個程序) - 要與此進程通信,您應該使用IPC遠程處理通道。這樣,當內存使用超過一定限制時,您可以終止進程。 –