微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有通知程序的潜在内存泄漏

如何解决带有通知程序的潜在内存泄漏

运行桌面执行跟踪工具包,我注意到一些奇怪的行为。

跟踪内存分配已指出一些奇怪的行为,在我看来,这很像泄漏。

此处跟踪和测试vi的图片=>

enter image description here

获取通知程序时,将分配内存(一次或两次,具体取决于情况),然后释放内存(要么根本不发送一次,要么释放一次),这意味着获得的每个通知程序都是分配的一个内存块,并且不会释放。这可能是导致我们的代码长时间使用批处理或获取并发布的通知程序运行时出现错误的原因。这是已知行为,并且分配的内存在跟踪范围之外自动释放吗?或者这是真正的低影响内存泄漏?

解决方法

根据提供的示例,很难确定是否确实存在泄漏,因为看不到所使用的按钮序列(创建和销毁)。您是否在两者之间发送数据?您是否一直在创建后立即释放它?您可以发布要测试的VI并描述如何对其进行精确测试吗?

如果通知程序创建一次,然后释放-那么没有发生内存分配,请检查下图。

因此,在您的情况下,还会发生一些其他事件,这些事件会导致内存分配。而且,将代码实现为FGV(或动作引擎)可以帮助消除此类问题,因为您将确保只打开一次引用,然后将其重用。多次打开引用但关闭次数较少时,将发生内存泄漏。 另一点-在LabVIEW中动态分配缓冲区是常事,并且可能由于不同的原因而发生。但是LabVIEW编译器足够智能,可以处理此类缓冲区,因此通常无需担心。分配缓冲区,然后将其清空,等等。只需确保始终关闭引用-因为LabVIEW内存问题的主要原因不是释放引用。 Notifiers trace

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。