写了个需要长时间运行的程序,没做内存优化,于是,程序内存、我、老大、客户都炸了。

目录

  • 一 查看内存使用情况
    • 1 未运行的程序所占内存
    • 2 查看运行中的VI所用时间及内存使用情况
    • 3 显示所分配缓冲区
  • 二 内存优化
    • 1 如非必要,不要将VI属性设置为重入
    • 2 使用“请求释放内存”函数
    • 3 使用移位寄存器或元素同址操作结构
    • 4 尽量避免开启子VI前面板
    • 5 可以将复杂VI拆分成几个子VI
    • 6 避免内存泄漏

一 查看内存使用情况

1 未运行的程序所占内存

文件-VI属性-内存使用

2 查看运行中的VI所用时间及内存使用情况

工具-性能分析-性能和内存

3 显示所分配缓冲区

工具-性能分析-显示缓冲区分配
一个黑点表示有一个缓冲区分配

二 内存优化

1 如非必要,不要将VI属性设置为重入

做了这么个子VI
主VI
设置为非重入然后运行一下
结果是这样的

设置为共享副本重入执行的时候
结果是这样的
设置为预先分副本重入执行的时候
结果是这样的

共享副本重入执行,当框图内多个相同子vi时,执行时系统会根据是否需要同时执行来创建独立的内存空间,如果任意时刻仅有一个vi在运行,则系统就只会创建一个独立的内存空间,若多个同时运行时,同时系统就会创建多个独立的内存空间。
设置为此模式时尽量不要有没初始化的东西。
预先分副本重入执行在框图内有多个相同子VI的时候,给每个子VI分配一个单独的内存空间。

2 使用“请求释放内存”函数

3 使用移位寄存器或元素同址操作结构

此程序先构造数组再对其中几个特定位置的值进行替换,每一步操作都新开一块缓存保存运算结果副本。


加了个移位寄存器之后,成功去掉了不必要的数据副本

4 尽量避免开启子VI前面板

非得开启的时候,如果子VI前面板上有数据量大的控件(表格、图表等等),在关闭的时候记得释放。
例如我这个,一个表格,从程序开启到运行结束,最后要显示的数据大概3M,然后它再生成个波形图,而这个子VI又同时运行22个,于是它就在查看数据的时候内存不足,挂了。
解决很简单,在退出查看的时候把数组和波形图置空,完活。

5 可以将复杂VI拆分成几个子VI

这个操作并不会增加额外的数据空间和代码,而且在子VI运行结束的时候,可以及时收回子VI数据空间。

6 避免内存泄漏

LabVIEW是可以自动管理内存的,适当的时候分配或回收资源。一般就反复打开某资源之后没关闭会出现内存泄漏。
就打开文件后,就算不连“关闭文件”这个函数程序也不报错,但是就是会内存泄漏

LabVIEW基础-内存优化相关推荐

  1. JVM 内存优化设置

    from:http://blog.sina.com.cn/s/blog_707577700100vy4m.html 在一些规模稍大的应用中,Java虚拟机(JVM)的内存设置尤为重要,想在项目中取得好 ...

  2. 【Android 内存优化】自定义组件长图组件 ( 长图滚动区域解码 | 手势识别 GestureDetector | 滑动计算类 Scroller | 代码示例 )

    文章目录 一.GestureDetector 创建与设置 二.GestureDetector 触摸事件传递 三.触摸滑动操作 四.惯性滑动操作 五.长图滑动组件代码示例 六.运行效果 七.源码及资源下 ...

  3. 【Android 内存优化】自定义组件长图组件 ( 获取图像宽高 | 计算解码区域 | 设置图像解码属性 复用 像素格式 | 图像绘制 )

    文章目录 一.获取图像真实宽高 二.计算解码区域 三.设置解码参数 内存复用 像素格式 四.图像绘制 五.执行效果 六.源码及资源下载 官方文档 API : BitmapRegionDecoder 在 ...

  4. 【Android 内存优化】Bitmap 硬盘缓存 ( Google 官方 Bitmap 示例 | DiskLruCache 开源库 | 代码示例 )

    文章目录 一.Google 官方 Bitmap 相关示例参考 二.磁盘缓存类 DiskLruCache 三.磁盘缓存初始化 四.存储数据到磁盘缓存中 五.从磁盘缓存中读取数据 六. Android 1 ...

  5. 【Android 内存优化】Bitmap 内存缓存 ( Bitmap 内存复用 | 弱引用 | 引用队列 | 针对不同 Android 版本开发不同的 Bitmap 复用策略 | 工具类代码 )

    文章目录 一.Bitmap 复用池 二.弱引用 Bitmap 内存释放 三.从 Bitmap 复用池中获取对应可以被复用的 Bitmap 对象 1.Android 2.3.3(API 级别 10)及以 ...

  6. 【Android 内存优化】Bitmap 图像尺寸缩小 ( 考虑像素密度、针对从不同像素密度资源中解码对应的 Bitmap 对象 | inDensity | inTargetDensity )

    文章目录 一.像素密度对解码图片的影响 二.不考虑像素密度会导致图片缩小尺寸不准确 三.DisplayMetrics 源码阅读.研究手机资源获取规则 四.像素密度参数设置取值 ( inDensity ...

  7. 【Android 内存优化】内存抖动 ( 垃圾回收算法总结 | 分代收集算法补充 | 内存抖动排查 | 内存抖动操作 | 集合选择 )

    文章目录 一. 垃圾回收算法总结 二. 分代收集算法补充 三. 查看 Java 虚拟机 四. 获取 Android 应用可使用最大内存 五. 内存抖动标志 六. 排查内存抖动 七. 常见的造成内存抖动 ...

  8. 【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )

    文章目录 一. 代码生成控件 1. 创建设置项目 ( 1 ) 创建项目 ( ① 选择 Create a new Xcode project | ② 创建 Single View Application ...

  9. Android性能优化 - 内存优化

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化- 内存优化 性能分析工具 - TraceView Android性能分析工具 为什么内存优化? 在一个商业项目中,很有可能因 ...

最新文章

  1. IOS开发-GitHub使用详解
  2. 「吐血」我把 10 年的全部学习资源都分享在这里了
  3. JQuery中.css()与.addClass()设置样式的区别
  4. RabbitMQ教程C#版 - 工作队列
  5. 更改eclipse中jsp默认编码格式为UTF-8
  6. [译] 如何在安卓应用中使用 TensorFlow Mobile
  7. Android源码编译到/data/app方法
  8. HTML5之全局属性 (声明:内容节选自《HTML 5从入门到精通》)
  9. 【C语言】之冒泡排序法(详解)
  10. Java 设计模式 Factory Method 工厂方法 模式
  11. 快速计算代码行小工具
  12. 简单因式分解100道及答案_初二数学压轴题100题
  13. https-CA证书申请
  14. 加速 SpringBoot 应用开发,官方热部署神器真带劲
  15. linux查看tomcat在,在陌生Linux环境查看Tomcat服务的方法
  16. 18在protel DXP中PCB图中给电路板绘制边框、安装孔的方法介绍成都电路板设计
  17. Java基础知识学习笔记总结
  18. C语言程序设计(第五版)学习笔记
  19. submit()和execute()区别
  20. 【echarts实现】中国地图 世界地图

热门文章

  1. React 入门教程【官网文档中文版】
  2. java 家谱管理系统_家谱管理系统
  3. echarts地图设置区块点击后颜色不改变
  4. 《python从入门到项目实践》第六章 列表和元组 //有一个课后答案
  5. 古巴比伦理财五大金科定律
  6. 我的世界服务器商店系统指令,我的世界自动商店指令 | 手游网游页游攻略大全...
  7. c语言课程设计报告停车系统,停车场管理系统C语言课程设计
  8. 详解shell IFS分隔符
  9. python IO模块【一】:IO类
  10. Ribbon负载均衡服务调用