我正在使用一个最初仅在.Net之前编写的ActiveX组件,这会导致内存泄漏。所有与.Net相关的内容(AxHost等)都已正确发布,但非托管内存不断增长。 (根据.Net mem profiler)
有没有办法强制从.Net内部释放非托管内存?也许这可以通过一种处理不守规矩的ActiveX组件来解决?
组件是Dynavix 2(dyDisplay,PictureDocument,AxDYNAview)。
答案 0 :(得分:1)
不幸的是,.Net运行时不负责非托管内存。
您可以做的是创建一个程序并使用IPC Remoting在两者之间进行通信。当您不再需要控件时,您可以终止第二个程序(或在内存使用量增长过多时将其终止)。
您甚至可以在控件中托管辅助应用程序的窗口 - 使用Windows屏幕保护程序在preview mode中执行的相同操作。