LabVIEW调用请求释放内存函数没有释放内存

更新 Aug 30, 2023

适用于

软件

  • LabVIEW

问题详述

  • 我在LabVIEW 2017或更新版本中使用请求释放内存函数,但任务管理器显示内存没有被释放,即使在LabVIEW 2016中使用。这是为什么?
  • 我需要释放内存以节省LabVIEW VI或可执行文件的内存空间。从任务管理器中,我可以看到内存在LabVIEW完全关闭之前不会被释放。我怎样才能让请求释放内内存函数起作用?

解决方案

在LabVIEW 2017中,内存管理器已更新到可以容纳更多内存,而不是将其返回给操作系统。应用这个更新是为了提高未来的内存分配速度。

要使用请求释放内存 函数,必须考虑以下事项:
  1. 请求释放内存仅适用于完成调用但仍保留的子 VI。
    • 运行一次并完成运行的调用方 VI 不会导致任何内存释放。
  2. 请求释放内存仅适用于使用临时缓冲数据且其数据值未以某种方式传递的子 VI。
    • 例如,未初始化的移位寄存器中的大数组不是临时缓冲数据。该数组必须保存在内存中,以便下一次调用能获取到以前的值。
    • 从子 VI 的连线板传出的值不是临时缓冲数据。
    • 队列数据值引用将会接管内存分配以避免创建副本。因此,这些方式不会创建可以释放的临时缓冲数据。
附件( LabVIEW 2018 保存)演示了如何正确使用请求释放内存函数。