LabVIEW性能和内存管理 7 LabVIEW中局部和全局变量的内存分配

news2025/1/18 8:47:46

LabVIEW性能和内存管理 7 LabVIEW中局部和全局变量的内存分配

本文介绍LabVIEW性能和内存管理的几个建议7。

LabVIEW Cleanup

–    LabVIEW cleans upmany references when the owning VI goes idle and others when the process closes

–    Manually closereferences to avoid undesirable memory growth, particularly for long-runningapplications.

当打开引用的层次结构顶层VI(拥有的VI)空闲时,或者当LabVIEW退出时,LabVIEW会自动关闭引用。当拥有的VI处于空闲状态时关闭的一些引用类型是文件引用、队列和ActiveX引用。其他引用,如VISA和IVI,直到LabVIEW退出才会关闭。

作为程序员,在执行期间关闭引用仍然是一个好主意,原因有几个。如果有一个长时间运行的程序,重复打开引用而不关闭它们可能会导致内存问题,因为每个引用都需要内存。此外,任何与外部代码相关的引用都应该手动关闭,以确保关闭进程以特定的顺序执行,以避免崩溃和其他可能的损坏。在大多数其他开发环境中,关闭引用失败通常会在关闭应用程序时导致崩溃或内存泄漏。

Memory Usage ofthe User Interface

–    Every control onthe UI requires memory in order to store the data structure

–    At run time,Control and Indicator data is additional copy of block diagram data

–    Default data forcontrols may contribute to unnecessary memory usage

–    SubVI UIsgenerally do not contribute to memory usage

在LabVIEW中最容易被忽视的内存使用区域之一是前面板。当加载前面板时,LabVIEW必须分配足够的内存来存储所有的数据结构和默认数据。每个控件都包含框图上数据的单独副本,因此内存密集型应用程序应避免显示大量数据,除非需要,否则应避免耗尽内存。

如果有一个非常大的前面板和非常大的控件,例如一个包含30000个元素的数组,那么前面板需要更多的内存来加载。较大的默认数据可能导致内存使用量增加和加载时间变慢。使用VI Analyzer工具包中的Array Default Values测试来识别默认数据不必要地增加内存使用的情况。避免为顶级VI创建一个单一的、单片的前面板。结合一些特性,如子面板控件和动态加载的VIs,如果使用得当,可以减少应用程序的内存使用量。

SubVI通常不会将它们的前面板加载到内存中,除非需要或手动加载,所以SubVI的前面板的内存使用通常不会影响应用程序的内存使用。

SubVIs and MemoryUsage

The executionsystem makes a copy of the control and indicator data of the subVI under thefollowing conditions:

•   The front panelis in memory

•   The front paneluses data printing

•   The block diagramuses Property Nodes that reference front panel controls/indicators

•   The VI uses localvariables

•   The front paneluses data logging

如果调用SubVI,则只将其编译后的代码加载到内存中,除非需要执行前面板。由于各种原因,前面板可能在内存中。其中几个项目需要内存中的前面板才能正常工作。也有可能SubVI配置为在调用时打开前面板。

在“操作”菜单中,可以启用“完成时打印”和“完成时记录”

Tips for reducingmemory usage

•   Operate on datain place

•   Do not overusereentrant settings

•   Close referencesto avoid leaks

•   Avoid operationswhich require the front panel to be in memory

–    Ex: Controlreferences

–    Save the VI andclose the front panel before running

•   Avoid largedefault data in arrays, graphs, etc.

•   Only displayinformation on the front panel when necessary

•   RequestDeallocation Primitive

LabVIEW中局部和全局变量的内存分配

正在编写一个LabVIEW应用程序,需要知道何时分配和解除分配全局变量以进行内存管理。有没有办法以编程方式释放此内存?

解答

局部变量

局部变量的分配发生在调用VI加载到内存中时。如果是独立VI,则局部变量的内存在运行时分配,并在运行结束时释放。如果局部变量在主VI中静态加载的子VI中声明,则局部变量的内存在主VI加载到内存中时分配,并在主VI卸载后不久由LabVIEW内存管理器解除分配。如果子VI是动态加载的,如下图所示,则局部变量的内存在子VI的调用时分配,并在卸载子VI后不久由LabVIEW内存管理器解除分配。

全局变量

全局变量存在于特殊的全局VI中,与应用程序流程分开。当被另一个VI访问时,它们会将变量的副本带入内存。当调用VI从内存中卸载时,此副本将被销毁。请注意,复制大型数组或其他大型变量可能既密集又耗时。

释放内存

LabVIEW无法以编程方式解分配为全局和局部变量预留的内存,但您可以在顶级VI完成之前解除为运行子VI而留出的内存。在子VI完成其操作后实施请求释放VI,以清除子VI的内存。

需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/18641.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Bean的作用域和生命周期

1. Bean 的作用域 对于全局变量,局部变量等的作用域相信大家都已经很清楚了,但是对于对象作用域有点摸不着头脑,下面通过一个简单的案例,康康对象的作用域 1.1 案例引入 现有一个公共的 Bean 对象 package com.bean.model;import org.springframework.stereotype.Componen…

【IEEE2017】RL:机器人库:一种面向对象的机器人应用程序的方法

RL:机器人库:一种面向对象的机器人应用程序的方法 摘要: 摘要:我们讨论了机器人库(RL)的架构和软件工程原理。在机器人系统、研究项目、工业应用和教育的需求的驱动下,我们确定了相关的设计需求…

linux上如何搭建Java环境

一 linux软件安装常用的方式对比 Linux下的软件安装,主要有如下三种,“正规”程度依次递减: 1、使用标准的yum/apt/yast包管理程序安装 2、使用标准rpm/deb或厂商自己的安装包(比如nVidia的显卡驱动用的bin包)安装 …

黑*头条_第2章_文章列表前端成形与后端变身

黑*头条_第2章_文章列表前端成形与后端变身 文章目录黑*头条_第2章_文章列表前端成形与后端变身文章列表前端成形与后端变身学习目标1.前端工程结构1.1 环境准备1.1.1 导入工程1.1.2 测试运行1.2 weex 跨终端前端框架1.3 工程结构说明1.4 源码结构1.5 WEEX UI2.文章列表前端开发…

算法实验题(涉外黄成老师!!!)

日期 2022.11.19 目录 实验报告一 第一题 2 实验报告二 第二题 3 实验报告三 第三题 4 实验报告四 第四题 5 实验报告五 第五题 6 实验报告六 第六题 7 实验报告一 第一题 一、实验目的 由1,3,4,5,7,8这六个数字所组…

剑指 Offer II 021. 删除链表的倒数第 n 个结点【链表】

难度等级:中等 上一篇算法: 82. 删除排序链表中的重复元素 II【链表】 力扣此题地址: 剑指 Offer II 021. 删除链表的倒数第 n 个结点 - 力扣(LeetCode) 1.题目:删除链表的倒数第 n 个结点 给定一个链表&a…

DWGViewX Pro 2021.4.X Crack by Cracki

DWGViewX pro 2021.4.X --Ω578867473 DWGViewX 是一个 ActiveX 组件,可让您在一个查看器中管理和查看 DWG、DXF 和 DWF 工程图。查看 R14 到 2022 版本的 DWG、DXF 和 DWF。加载本地磁盘或网络网站上的图纸,并使用查看器缩放、平移、旋转图纸、打开/关闭…

Java中的线程

线程 什么是线程&#xff1a; 什么是多线程&#xff1a; 学习目的&#xff1a; 多线程的创建 方式一&#xff1a;继承Thread类 public class MyThread{public static void main(String[] args) {Thread thread01 new Thread01();thread01.start();for (int i 0; i < 5; …

翻倍增长!C-V2X商业化“提速”,新一代模组加速“助跑”

C-V2X正在逐步走向商业的规模化部署&#xff0c;由此也带动了C-V2X模组需求的高速增长。 高工智能汽车研究院监测数据显示&#xff0c;今年1-9月中国市场&#xff08;不含进出口&#xff09;乘用车前装标配搭载V2X技术新车交付上险为10.58万辆&#xff0c;同比增长283.33%&…

计算机视觉|投影与三维视觉

这一篇将学习投影与三维视觉&#xff0c;沿用上一篇 计算机视觉|针孔成像&#xff0c;相机内外参及相机标定&#xff0c;矫正的重要性 摄像机内参数矩阵M、畸变参数、旋转矩阵R、平移向量T以及但影响矩阵H。回顾放射和投影变换&#xff0c;并使用POSIT算法从一幅图像中查找获得…

基于stm32单片机有害气体监测检测Proteus仿真

资料编号&#xff1a;097 下面是相关功能视频演示&#xff1a; 97-基于stm32单片机有害气体监测检测Proteus仿真&#xff08;仿真源码全套资料&#xff09;功能介绍&#xff1a;检测当前的有害气体浓度&#xff0c;LCD1602显示&#xff0c;并且可以自动打开关闭风扇&#xff…

Pulsar 各个Shedder分析及新的Shedder -- AvgShedder

看到今年Pulsar 峰会上挺多人分享负载均衡的内容&#xff0c;这里也整理分享一下相关的内容。 社区现有策略的分析 LoadSheddingStrategy pulsar进行shedding的时候&#xff0c;使用的是ThresholdShedder类&#xff0c;ThresholdShedder类是LoadSheddingStrategy接口的其中一…

锐捷SuperVlan实验配置

Super Vlan配置 创建Vlan vlan range 2,3,4,10,20 配置Vlan10为Super Vlan&#xff0c;Vlan 2,3,4为Sub Vlan vlan 10 supervlan subvlan 2,3,4 配置Sub Vlan的地址范围&#xff08;也可以不配置&#xff09; Vlan 2 subvlan-address-range 192.168.10.10 192.168.10.50 配置S…

【数据结构】—时间复杂度or空间复杂度以及基础题目练习

小菜坤日常上传gitee代码&#xff1a;https://gitee.com/qi-dunyan ❤❤❤ 个人简介&#xff1a;双一流非科班的一名小白&#xff0c;期待与各位大佬一起努力&#xff01; 推荐网站&#xff1a;cplusplus.com 目录前言算法与复杂度时间复杂度大O的渐进表示法时间复杂度计算练习…

[附源码]java毕业设计社区疫情防控管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

MySQL纯代码复习(上)

前言 本文章是用于总结尚硅谷MySQL教学视频的记录文章&#xff0c;主要用于复习&#xff0c;非商用 原视频连接&#xff1a;https://www.bilibili.com/video/BV1iq4y1u7vj/?p21&spm_id_frompageDriver&vd_sourcec4ecde834521bad789baa9ee29af1f6c https://www.bilib…

【设计模式】 - 创建者模式 -建造者模式

1. 建造者模式 1.1 概述 将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 分离了部件的构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于&#xff1a;某个对象的构建过程复杂的情况。 由于实现了…

小目标检测:基于切图检测的yolov5小目标检测

目前在目标检测方面有着众多的检测框架,比如两阶段的FasterRcnn、以及yolo系列的众多模型。yolo系列在实际中用的最多,一方面性能确实不错,另一方面具有着较多的改进型系列。今天我们主要使用的yolov5系列。具体原理过程就不多说了,大家自行百度。放一张v5的网络结构图。 大…

计算机网络部分(一)

1 请描述 TCP/IP 协议中主机与主机之间通信的三要素 答&#xff1a; IP 地址&#xff08;IP address&#xff09; 子网掩码&#xff08;subnet mask&#xff09; IP 路由&#xff08;IP router&#xff09; 扩展&#xff1a; TCP/IP定义&#xff1a;TCP/IP是基于TCP和IP这两个…

883. 三维形体投影面积

883. 三维形体投影面积 在 n x n 的网格 grid 中&#xff0c;我们放置了一些与 x&#xff0c;y&#xff0c;z 三轴对齐的 1 x 1 x 1 立方体。 每个值 v grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上。 现在&#xff0c;我们查看这些立方体在 xy 、yz 和 zx 平面上的投…