【问题标题】:unmanaged memory leak in .net through activex component dynavis通过activex组件dynavis在.net中的非托管内存泄漏
【发布时间】:2011-08-03 10:26:15
【问题描述】:

我使用的 ActiveX 组件最初仅在 .Net 之前编写,导致内存泄漏。所有 .Net 相关实例(AxHost 等)都已正确释放,但非托管内存不断增长。 (根据 .Net 内存分析器)

有没有办法从.Net 中强制释放非托管内存?也许这可以通过处理不守规矩的 ActiveX 组件的方式来解决?

组件是 Dynavix 2(dyDisplay、PictureDocument、AxDYNAview)。

【问题讨论】:

    标签: c# memory-leaks activex unmanaged-memory


    【解决方案1】:

    很遗憾,.Net 运行时不对非托管内存负责。

    您可以做的是创建一个程序并使用IPC Remoting 在两者之间进行通信。当您不再需要这些控件时,您可以终止第二个程序(或在其内存使用量增长过多时终止它)。

    您甚至可以在控件中托管辅助应用程序的窗口 - 使用与 preview mode 中的 Windows 屏幕保护程序相同的技巧。

    【讨论】:

    • 感谢您的提示。我不明白 IPC Remoting 将如何帮助我?我可以通过 IPC Remoting 从 ActiveX 调用远程功能,但这有什么帮助呢?我已经可以通过 AxHost 调用函数了?
    • 不,你会在一个单独的进程中托管控件(阅读:另一个程序与你的主进程同时运行) - 为了与这个进程通信,你应该使用 IPC 远程通道。这样你就可以在进程的内存使用超过一定限制时终止进程。
    猜你喜欢
    • 2020-07-11
    • 2012-01-30
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    相关资源
    最近更新 更多