.net 中通过 Activex 组件 dynavis 发生非托管内存泄漏

发布于 2024-11-27 13:21:23 字数 240 浏览 0 评论 0原文

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

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

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

I'm using an ActiveX component originally written only for pre .Net days that causes a memory leak. All .Net related intances (AxHost, etc..) are properly released yet the unmanaged memory keeps growing. (according to .Net mem profiler)

Is there any way to force release unmanaged memory from within .Net? Maybe this can be solved with a way of handling unruly ActiveX components?

The components are Dynavix 2 (dyDisplay, PictureDocument, AxDYNAview).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

街道布景 2024-12-04 13:21:23

不幸的是,.Net 运行时不负责非托管内存。

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

您甚至可以在控件中托管辅助应用程序的窗口 - 使用 Windows 屏幕保护程序在 预览中所做的相同技巧模式

Unfortunately no, the .Net runtime is not responsible for unmanaged memory.

What you could do is to create a program and use IPC Remoting to communicate between the two. When you no longer need the controls you can kill the second program (or kill it when its memory usage grows too much).

You can even host your secondary application's windows in your controls - using the same trick Windows Screensavers do in preview mode.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文