我使用的 ActiveX 组件最初仅用于 .Net 之前的日子,这会导致内存泄漏。所有 .Net 相关实例(AxHost 等)都已正确释放,但非托管内存仍在不断增长。(根据.Net mem profiler)
有没有办法从.Net 中强制释放非托管内存?也许这可以通过处理不守规矩的 ActiveX 组件的方式来解决?
组件是 Dynavix 2(dyDisplay、PictureDocument、AxDYNAview)。
我使用的 ActiveX 组件最初仅用于 .Net 之前的日子,这会导致内存泄漏。所有 .Net 相关实例(AxHost 等)都已正确释放,但非托管内存仍在不断增长。(根据.Net mem profiler)
有没有办法从.Net 中强制释放非托管内存?也许这可以通过处理不守规矩的 ActiveX 组件的方式来解决?
组件是 Dynavix 2(dyDisplay、PictureDocument、AxDYNAview)。
不幸的是,.Net 运行时不负责非托管内存。
您可以做的是创建一个程序并使用IPC Remoting在两者之间进行通信。当您不再需要这些控件时,您可以终止第二个程序(或在其内存使用量增长过多时终止它)。
您甚至可以在控件中托管辅助应用程序的窗口 - 使用 Windows 屏幕保护程序在预览模式下执行的相同技巧。